一.返回新数组,不改变原数组
1.join
把数组中所有元素放入一个字符串中,返回字符串
const arr = ['pr','is',18]
console.log(arr.join(',')); //pr,is,18
console.log(arr); //['pr','is',18]
2.concat
连接多个(含两个)数组,两边的原始数组都不会变化,返回被连接数组的一个副本,可继续concat
const arr = [1,2,3,4]
const arr1 = ['pre','is','a','boy']
const arr2 = [5,6]
console.log(arr.concat(arr1,arr2).concat(9)) //[1, 2, 3, 4, "pre", "is", "a", "boy", 5, 6, 9]
3.slice
从开始到结束([)左闭右开,即不包括结束)选择数组的一部分浅拷贝到一个新数组
const arr = [0,1,2,3,4,5,6,7,8,9]
console.log(arr.slice(1,5)); //[1,2,3,4]
console.log(arr); //[0,1,2,3,4,5,6,7,8,9]
4.map
创建一个新数组并返回,新数组的每个元素由元素组中的每一个元素执行提供函数而来,其中原始数组不会发生改变,新数组跟旧数组长度一样
const arr = [1,2,3,4]
console.log(arr.map(i => i*10-5)); //[ 5, 15, 25, 35 ]
console.log(arr.map(i => if(i<3){return i})) //[1, 2, undefined, undefined]
console.log(arr.map(i => return i<3)) //true, true, false, false]
console.log(arr); //[ 1, 2, 3, 4 ]
5.every
检测数组所有元素是否都符合指定条件
- 如果一个数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测;
- 如果所有元素都满足条件,则返回true;
const arr = [1,2,3,4]
console.log(arr.every(i => i>2)); //false
console.log(arr.every(i => i>0)); //true
console.log(arr); //[1,2,3,4]
6.some
用于检测数组中的元素是否满足指定条件
- 如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测;
- 如果没有满足条件的元素,则返回false;
const arr = [1,2,3,4]
console.log(arr.some(i => i>4)); //false
console.log(arr.some(i => i>0)); //true
console.log(arr); //[1,2,3,4]
7.filter
创建一个新的数组,新数组中的元素是通过检查符合条件的所有元素
const arr = [1,2,3,4]
console.log(arr.filter(i => i>2)); //[3,4]
console.log([].filter(i => i === 'pr')); //[]
console.log(arr); //[1,2,3,4]
8.forEach
用于调用数组的每个元素,并将元素传递给回调函数,返回undefined
const arr = [1,2,3,4]
const copy = []
console.log(arr.forEach(i => {copy.push(i*2)})); //undefined
console.log(copy); //[2,4,6,8]
console.log(arr); //[1,2,3,4]
9.reduce
接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。若是空数组是不会执行回调函数的;
arr.reduce(function(pre,cur,index,arr){...},init)
/**
arr 原数组
pre 上次回调返回值
cur 当前正在处理的数组元素
index 当前正在处理数组元素的索引,若提供init,则索引为0,否则为1
init 表示初始值
**/
const arr = [1,2,3,4]
//求数组项之和
let sum = arr.reduce((pre, cur) => pre + cur, 0) //10
//求数组项最大值
let max = arr.reduce((pre, cur) => { return Math.max(pre, cur) }) //4
//数组去重
let newArr = arr.reduce((pre, cur) => {
pre.indexOf(cur) === -1 && pre.push(cur);
return pre;
}, [])
二.返回新数组,改变原数组
1.pop
删除数组的最后一个元素,并返回这个元素(即被删除的元素)
- 如果数组为空,则不改变数组,返回undefined
const arr = [1,2,3,4]
const arr1 = []
console.log(arr.pop()); //4
console.log(arr1.pop()); //undefined
console.log(arr); //[1,2,3]
console.log(arr1); //[]
2.push
将一个或多个元素添加到数组的末尾,返回值是改变之后的数组长度
3.shift
删除数组的第一个元素,并返回这个元素
4.unshift
将一个或多个元素添加到数组的开头,返回值是改变后的数组长度
5.reverse
颠倒数组元素中的元素位置,返回该数组的引用
6.sort
对数组的元素进行排序,并返回数组。排序不一定是稳定的
7.splice
向数组中添加/删除项目,然后返回被删除项目