好记性不如烂笔头,都是一些很常用的操作数组方法,记录下来方便自己以后查阅。
- isArray() 判断变量是否是一个js数组
var arr = [1,2,3,4,5];
console.log(Array.isArray(arr)); // true
- join() 把数组转换成字符串,然后给他规定个连接字符,默认的是逗号( ,)
var arr = [1,2,3,4,5];
console.log(arr.join()); // 1,2,3,4,5
console.log(arr.join('-')); // 1-2-3-4-5
console.log(arr); //[1, 2, 3, 4, 5] 原数组不变
- push() 添加元素,从数组末尾开始添加,返回新数组的长度
var arr = [1,2,3,4,5];
var len = arr.push(6);
console.log(len); // 6
console.log(arr); // [1, 2, 3, 4, 5, 6]
- unshift() 添加元素,从数组头部开始添加,返回新数组的长度
var arr = [1,2,3,4,5];
var len = arr.unshift(6);
console.log(len) // 6
console.log(arr) //[6, 1, 2, 3, 4, 5]
- pop() 移除元素,从数组的末尾开始移除,返回移除的元素
var arr = [1,2,3,4,5];
var a = arr.pop();
console.log(a); // 5
console.log(arr) // [1, 2, 3, 4]
- shift() 移除元素,从数组的头部开始移除,返回移除的元素
var arr = [1,2,3,4,5];
var a = arr.shift();
console.log(a); // 1
console.log(arr) // [2, 3, 4, 5]
- sort() 对数组的元素进行排序(请注意是按照字母顺序排列)
var arr = [1,12,3,42,35];
var newArr = arr.sort();
console.log(newArr); // [1, 12, 3, 35, 42]
console.log(arr); // [1, 12, 3, 35, 42] 原数组已改变
function sortNumber(a,b) {
return a - b
}
var newArr1 = arr.sort(sortNumber); // 如果想按照数值大小进行排序,就需要提供比较函数
console.log(newArr1); // [1, 3, 12, 35, 42]
- reverse() 反转数组项的顺序
var arr = [1,2,3,4,5];
var newArr = arr.reverse();
console.log(newArr); // [5, 4, 3, 2, 1]
console.log(arr); // [5, 4, 3, 2, 1] 原数组已改变
- concat() 将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
var arr = [1,2,3,4,5];
var newArr = arr.concat(6,[7,8]); // 如果参数有数组,最后添加的是数组中的元素
console.log(newArr); // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr); // [1, 2, 3, 4, 5]
- indexOf() 接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。
var arr = [1,8,3,4,3,8,6];
console.log(arr.indexOf(8)); // 1
console.log(arr.indexOf(8,2)); // 5
console.log(arr.indexOf(9)); // -1 没有找到则返回-1
- lastIndexOf() 接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
var arr = [1,8,3,4,3,8,6];
console.log(arr.lastIndexOf(3)); // 4
console.log(arr.lastIndexOf(3,2)); // 2 注意第二个参数2是从数组末尾开始算的
console.log(arr.lastIndexOf(9)); // -1
- slice() 基于当前数组的一项或多项创建一个新数组
一个参数:返回该参数指定位置到末尾项组成的数组
两个参数:返回开始到结束位置组成的数组(含头不含尾)
如果结束位置小于开始位置,则返回一个空数组
当出现负数时,将负数加上数组长度的值来替换该位置的数
var arr = [1,2,3,4,5];
var arr1 = arr.slice(2);
console.log(arr1); // [3, 4, 5]
var arr2 = arr.slice(2,4);
console.log(arr2); // [3, 4]
var arr3 = arr.slice(1,-2); //相当于arr.slice(1,3)
console.log(arr2); // [2, 3]
- splice()
删除:两个参数,第一个参数删除的起始位置,第二个参数要删除的项数,返回由删除项组成的数组;
插入:多个参数,第一个起始位置,第二个删除的项数,后面是插入项,返回删除项组成的数组;
修改:三个参数,第一个起始位置,第二个删除项数,第三个替换项,返回删除项组成的数组
var newArr = arr.splice(2,1);
console.log(arr); // [1, 2, 4, 5, 6]
console.log(newArr); // [3]
var newArr1 = arr.splice(2,0,7,8);
console.log(arr); // [1, 2, 7, 8, 3, 4, 5, 6]
console.log(newArr1); // []
var newArr2 = arr.splice(2,1,9);
console.log(arr); // [1, 2, 9, 4, 5, 6]
console.log(newArr2); // [3]
- arr.every(function(item){})
返回一个boolean值 每一项返回true,则返回true
var arr = [1,2,3,4,5,6];
var flag = arr.every((item) => {
return item > 0;
})
console.log(flag); // true
- arr.filter(function(item){})
返回一个数组,返回结果为true的项组成的数组
var arr = [1,2,3,4,5,6];
var newArr = arr.filter((item) => {
return item > 3;
})
console.log(newArr); // [4, 5, 6]
- arr.forEach(function(item){})
对数组的每一项给定函数,无返回值
var arr = [1,2,3,4,5,6];
arr.forEach((item) => {
console.log(item) // 1 2 3 4 5 6
})
- arr.map(function(item){})
返回每次函数调用的结果组成的数组
var arr = [1,2,3,4,5,6];
var newArr = arr.map((item) => {
return item + 1;
})
console.log(newArr); // [2, 3, 4, 5, 6, 7]
- arr.some(function(item){})
返回一个boolean值,任一项返回true则返回true
var arr = [1,2,3,4,5,6];
var flag = arr.some((item) => {
return item > 5;
})
console.log(flag);
- arr.reduce(function(total, currentValue, currentIndex, arr), initialValue) 从数组的第一项开始对数组中的每个元素执行函数,生成一个值
total : 初始值, 或者计算结束后的返回值。必选
currentValue:当前元素 必选
currentIndex:当前元素的索引 可选
arr:当前元素所属的数组对象 可选
initialValue:传递给函数的初始值 可选
var arr = [1,2,3,4,5,6];
var result = arr.reduce((previousValue,currentValue) =>
previousValue + currentValue)
console.log(result); // 21
- reduceRight(function(total, currentValue, currentIndex, arr), initialValue) 从数组的最后一项开始对数组中的每个元素执行函数,生成一个值 参数和reduce()参数一样
var arr = [1,2,3,4,5];
var result = arr.reduceRight((previousValue,currentValue) => {
return previousValue + currentValue
},10)
console.log(result); // 25