创建数组
- 用Array构造函数
var arr = new Array();
var arr = new Array(10);//length为10的数组
var arr = Array();
- 数组字面量表示法
var arr = []
检测数组
Array.isArray(obj)
检测某个值到底是不是数组
var arr = [];
console.log(Array.isArray(arr));//true
var arr1 = new Date();
console.log(Array.isArray(arr1));//false
增删数组元素
- 通过改变length的值,可以对数组的末尾添加或移除
var arr = [1,2,3,4];
arr.length = 3;
console.log(arr); // [1,2,3]
arr.length = 4;
console.log(arr); // [1, 2, 3, undefined]
arr[3] = 5;
console.log(arr); //[1,2,3,5]
push()
可将任意数量的参数添加到末尾,并返回数组长度
var arr = [1,2,3,4];
console.log(arr.push(7));// 5 数组长度为5
console.log(arr);//[1,2,3,4,5]
pop()
从数组末尾移除一项,减少length值,并返回移除的项
var arr = [1,2,3,4];
console.log(arr.pop());//4 移除了4
console.log(arr);//[1,2,3]
push()和pop()是栈方法
unshift()
可将任意数量的参数添加到开头,并返回数组长度
var arr = [1,2,3,4];
console.log(arr.unshift(7));//5 长度
console.log(arr);//[7,1,2,3,4]
shift()
从数组开头移除一项,减少length值,并返回移除的项
var arr = [1,2,3,4];
console.log(arr.shift());//1
console.log(arr);//[2,3,4]
unshift和shift是队列方法
转换方法
join()
使用不同分隔符将数组转化成字符串
var arr = [1,2,3,4];
console.log(arr.join('-'));//"1-2-3-4"
操作方法
concat()
创建一个新数组,将接收到的参数添加到新数组的末尾
注意:concat()不会影响原始数组
var arr1 = [1,2,3]
var arr2 = [4,5,6]
var arr3 = arr1.concat(7,[8,9]);
console.log(arr3);// [1, 2, 3, 7, 8, 9]
var arr4 = arr1.concat(arr2);
console.log(arr4);// [1, 2, 3, 4, 5, 6]
var arr5 = arr1.concat();
console.log(arr5); //[1, 2, 3] 这是一个新数组
slice()
基于当前数组中的一个或多个项创建新数组。
- 一个参数:从参数指定位置开始到当前数组末尾的所有项。
- 两个参数:起始位置到结束位置,但不包括结束位置的所有项
- 可以有负数:数组长度加上该数来确定相应的位置。
注意:slice()不会影响原始数组
var arr1 = [1,2,3,4,5,6];
var arr2 = arr1.slice(2);
console.log(arr2);// [3, 4, 5, 6]
var arr3 = arr1.slice(1,4);
console.log(arr3);// [2, 3, 4]
var arr4 = arr1.slice(-2);
console.log(arr4); // [5, 6] -2+6=4,从下标为4的项5开始
splice()
用途:删除,插入,替换
- 删除:两个参数,要删除的第一项位置和要删除的项数
- 插入:三个参数,起始位置、要删除的项数、插入的项
- 替换:三个参数,起始位置,删除的项数,插入的项(先删除在插入即替换)
splice返回一个数组,包含被删除的项
var arr1 = [1,2,3,4,5,6];
var arr2 = arr1.splice(0,1);
console.log(arr1);//[2, 3, 4, 5, 6]
console.log(arr2);[1]
var arr3 = arr1.splice(1,0,'red','green');
console.log(arr1);//[2, "red", "green", 3, 4, 5, 6]
console.log(arr3);//[]
var arr4 = arr1.splice(1,3,'yellow','black');
console.log(arr1);//[2, "yellow", "black", 4, 5, 6]
console.log(arr4);//["red", "green", 3]
位置方法
indexOf()
从数组的开头开始向后查找
两个参数:要查找的项、查找的起点、
没找到要查的项则返回-1
var arr1 = [3,4,7,8,0,9,4];
console.log(arr1.indexOf(4)); //1
console.log(arr1.indexOf(5));//-1
console.log(arr1.indexOf(4,3));//6 从下标为3的位置开始查找数字4
lastIndexOf()
从数组的末尾开始向前查找
var arr1 = [3,4,7,8,0,9,4];
console.log(arr1.lastIndexOf(0));//4
console.log(arr1.lastIndexOf(5));//-1
console.log(arr1.lastIndexOf(4,7));// 5从下标为7的项开始往前查找,找最近的。
重排序方法
reverse()
反转数组的顺序
var arr = [1,2,3,4];
console.log(arr.reverse());//[4,3,2,1]
sort
按升序排列数组项,最小的值在最前面,通过toString()比较字符串Unicode 。
var arr = [77,26,52,98,11];
console.log(arr.sort());//[11, 26, 52, 77, 98]
var arr = ['banana','hello','apple','pear'];
console.log(arr.sort());//["apple", "banana", "hello", "pear"]
var arr = [0,10,1,5,15];
console.log(arr.sort());//[0, 1, 10, 15, 5],进行字符串比较时'10'位于‘5’前面
比较字符串可能改变数组的顺序,可以接一个比较函数。
function compare(value1,value2){
if(value1 < value2){
return -1;
}else if(value1 > value2) {
return 1;
}else {
return 0;
}
}
var arr = [0,10,1,5,15];
console.log(arr.sort(compare));//[0, 1, 5, 10, 15]
//sort()得到的参数为正数时才交换两个值的顺序,否则不交换
或者更简单的
function compare(value1,value2){
return value1 - value2;
}
var arr = [0,10,1,5,15];
console.log(arr.sort(compare));//[0, 1, 5, 10, 15]
迭代方法
forEach(element,index,array)
遍历数组,参数为一个回调函数。
本质与for循环迭代数组一样。
回调函数有三个参数:
- 当前元素
- 当前元素索引值
- 整个数组
var arr = [1,2,3,4,5];
for(var i = 0; i < arr.length;i++){
console.log(arr[i]);
} // 1 2 3 4 5
arr.forEach(function(e){
console.log(e);
})// 1 2 3 4 5
every(element, index, array)
查询数组中的项是否满足某个条件,全true即true。
var arr = [1,2,3,4,5,6];
var everyResult = arr.every(function(a){
return a > 5;
});
console.log(everyResult);// false
some(element, index, array)
查询数组中的项是否满足某个条件,一true即true。
var someResult = arr.some(function(a){
return a > 5;
});
console.log(someResult);//true
map()
遍历数组返回经过函数执行的结果。
var arr = [1,2,3,4,5,6];
var mapResult = arr.map(function(a){
return a * 2;
});
console.log(mapResult);//[2, 4, 6, 8, 10, 12]
fliter()
通过函数判断返回数组中满足要求的项。
var arr = [1,2,3,4,5,6];
var filterResult = arr.filter(function(a){
return a > 3;
});
console.log(filterResult);//[4,5,6]
归并方法
reduce()
从数组第一项迭代数组所有项最终返回一个值。
var arr = [1,2,3,4,5];
var sum = arr.reduce(function(x,y){
return x + y;
});
console.log(sum);//15
reduceRight()
从数组最后一项迭代数组所有项最终返回一个值。