数组是很常用的引用类型,在开发时对数组各种操作应该熟练掌握,梳理一下关于数组的基本知识,有不对的地方欢迎指正
数组是数据的有序列表,ECMAScript 数组的每一项可以保存任何类型的数据
创建数组方法
- 使用Array构造函数
var arr1 = new Array(3);//创建一个3项的数组
var arr2 = new Array("3");//创建一个一项为3的数组
var arr3 = new Array(1,2,3);//创建一个三项包含1,2,3的数组
- 使用字面量方式
var arr = [1,2,3]
在使用数组字面量表示法时,也不会调用 Array 构造函数
数组访问和设置
数组通过下标访问和设置数组
var numArr = [1,2,3];
alert(numArr[0]);//访问数组
numArr[2]=5;//下标小于数组长度,修改数组项
numArr[3]= 6;//下标大于数组长度,增加数组长度
length属性
数组length属性不只是可读的,能够对数组从尾部进行删除或者添加操作
var color = ['red','blue'];
color.length = 1;//删除项只保留第一项
color.length = 2;//又增加了一项,值为undefined
数组检测
- instanceof
arr instanceof Array;//true/false
- isArray
Array.isArray(arr);//true/false
数组方法
转换方法
toString()
;返回逗号分隔的字符串toLocalString()
;返回逗号分隔的字符串valueOf()
;返回数组join()
;返回指定分隔符分割的字符串
栈,队列方法
push()
;从尾部添加指定项,返回length
pop()
;从尾部删除一项,返回删除项shift()
;从头部移除一项,返回移除项unshift()
;从头部添加一项,返回length
重排序方法
reverse()
; 反转数组sort()
;排序,(比较的时字符串,最佳方案是传入一个比较函数)
function compare(value1, value2) {
if (value1 <value2) {
return -1;
} else if(value1 <value2){
return 1;
}else {
return 0;
}
}
操作方法
splice()
(第一个参数代表起始下标,第二个参数代表删除个数,第三个之后的参数代表插入项)
var arr = [1,2,3];
arr.splice(0,1);//从第一项开始删除一项
arr.splice(0,1,2)//把第一项替换为2
arr.splice(1,0,2)//在第一项后面插入一项2
slice()
(截取数组,一个参数时,返回起始下标到最后的数组,两个参数返回起始位置到结束位置的数组,不包括结束位置)concat()
;字符串拼接
位置方法
indexOf()
查找字符串在数组中第一次出现的位置,没有返回-1lastIndexOf()
反向查找字符串在数组中第一次出现的位置,没有返回-1
迭代(遍历方法)
every()
运行给定函数,每一项都为true,返回truesome()
运行给定函数,任意一项都为true,返回trueforEach()
对每一项做处理,无返回值map()
对每一项处理,返回处理后数组filter()
过滤,返回符合条件的数组