不改变原数组的方法有11种,它们分别是(concat, map, filter, join, every, some, indexOf, slice, forEach, reduce, reduceRight),本文先介绍前6个。
concat:数组合并
该方法可以连接两个或多个数组,并将新的数组返回
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr3 = arr1.concat(arr2)
console.log(arr1, arr2, arr3)
//打印结果:[1, 2, 3], [4, 5, 6], [1, 2, 3, 4, 5, 6]
map:数组映射
用于遍历原数组的每一项,返回一个新的数组,原数组不改变,该方法有三个参数:value:遍历项的数据,index:遍历项的索引,self:数组自身
let arr = [0, 1, 2]
let arr1 = arr.map((value, index, self)=>{
return `${value + 1},${index},${self === arr}`
}
console.log(arr1) //['1,0,true', '2,1,true', '3,2,true']
filter:数组过滤
过滤数组中的元素并返回一个新数组
let arr = [1, 2, 4]
let arr1 = arr.filter(item => item>2)
console.log(arr1) //[4]
join:数组拼接
将数组按一个分隔符拼接成字符串,默认连接字符为 "," 逗号。
let arr = [1, 2, 3]
let str = arr.join('-')
console.log(str) //'1-2-3'
every:数组检测
检测数组所有元素是否都符合指定条件(通过函数提供),它不会对空数组进行检测。如果数组中有一个元素不满足要求则返回false,只有全部元素都满足才会返回true。
let arr = [2, 3, 4]
console.log(arr.every(item => item>1)) //true
console.log(arr.every(item =>a item>3)) //false
some:数组检测
检测数组所有元素是否有指定条件(通过函数提供)的,它不会对空数组进行检测。如果数组中有一个元素满足要求则返回true,只有全部元素都不满足才会返回true。
let arr = [2, 3, 4]
console.log(arr.some(item => item<1)) //false
console.log(arr.some(item => item<3)) //true