JavaScript 中的对象是指带有属性和方法的特殊数据类型。JavaScript 中的所有事物都是对象,比如字符串、数组、函数等。对象分为内置对象和原生对象,它们的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。从语法层面来看的话,原生对象需要使用
new
创建,而内置对象则不需要。JavaScript 常见的内置对象有:
Array
、String
、Math
、Date
几种。
Array
的元素可以是任意的类型。Array
的创建有两种方式,使用构造函数:
|
|
或者使用字面量来创建数组:
|
|
读写
Array
的取值和赋值可以通过 []
进行。如:
|
|
上面的代码说明,Array
可以灵活的改变长度,越界和未赋值的部分,都是 undefined
。
栈方法
栈方法,顾名思义,就是把数组当做栈来处理,也就是先进先出的原则。主要有以下几个方法:
push
|
|
push
的作用是将元素序列添加到 Array
的尾部,其返回值是添加后的数组长度。
pop
|
|
pop
的作用是移除 Array
的最后一个元素,其返回值是被移除的元素。
unshift
|
|
unshift
的作用是将元素序列添加到 Array
的头部,其返回值是添加后的数组长度。
shift
|
|
pop
的作用是移除 Array
的第一个元素,其返回值是被移除的元素。
转字符串
join
方法可以将 Array
转换成一个字符串,语法如下:
|
|
反序
reverse
方法可以将 Array
反序排列,如下:
|
|
排序
sort
方法可以根据传入的参数,对 Array
进行排序:
|
|
需要注意的是,sort
方法在对数值进行排序时,也是先将元素转为 String
类型在排序,因此,数值的排序是按首位排序,首位相同再对第二位进行比较:
|
|
如果需要对数值进行排序,那么需要给 sort
传入一个匿名函数:
|
|
连接其他数组
concat
方法用于两个或多个数组的连接:
|
|
截取
|
|
slice
方法越界,会截取所有在此范围内的元素。slice
方法可以接受两个参数,start
和 end
,其中 start
是必需的,start
参数可以是负数,如果是负数,表示从数组尾部开始计算。
|
|
当 slice
方法的参数是负数时,会用数组的长度加上这个数,来确定起始或结束的位置。
删除、插入和替换
删除的语法是 arr.splice(index,count)
,参数含义如下:
形参 | 含义 |
---|---|
index | 要删除的起始位置 |
count | 要删除的元素个数 |
count
如不填,则删除 index
后的所有元素,如为 0,则不删除任何元素,示例如下:
|
|
splice
的返回值是被删除的数组片段。
插入的语法是 arr.splice(index,0,item1,...,itemX)
,返回值是空数组;
替换的语法是 arr.splice(index,count,item1,...,itemX)
,返回值是被删除的数组片段;
查找元素下标
indexOf
方法用于查找元素在数组中的位置,可以接收两个参数:
形参 | 含义 |
---|---|
searchValue | 必需,要查找的元素 |
startIndex | 可选,索引的起始位置,不填则从 0 开始 |
返回值是 Number
类型,如未找到该元素,则返回 -1
,如有多个元素,则返回第一个元素的下标:
|
|
lastIndexOf
方法和 indexOf
作用相同,不同的地方是从数组末尾开始查找。