JS数组常用方法
1.map
map方法执行调用方法后返回一个新的数组,新数组中的每一项是调用方法处理后的新值,但并不会改变原数组,并且新数组的长度与原数组相等。
let arr = [1, 2, 3]
let newArr = arr.map(item => return { item * 2 })
newArr = [2, 4, 6]
2.forEach
forEach方法用于遍历数组,没有返回值。
let arr = [{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19},{id: 3, name: 'xiaoqiang', age: 22}]
arr.forEach(item => { console.log(item) })
打印结果:[{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19},{id: 3, name: 'xiaoqiang', age: 22}]
3.filter
filter方法用于过滤数组。依次遍历数组中的每一项,返回满足过滤条件的数组。判断是否满足过滤条件是通过函数内部的return实现的,return true表示满足,返回给新数组,反之则不返回。
let arr = [3, 13, 5, 20]
let newArr = arr.filter(item => item > 10)
newArr = [13, 20]
4.find
find方法返回数组中第一个满足条件的值,即数组中的元素,之后的值不再遍历,未找到返回undefined。注:find方法返回的是数组的元素
let arr = [{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19}, {id: 3, name: 'xiaoqiang', age: 22}]
let obj = arr.find(item => item.age > 20)
obj= {id: 1, name: 'xiaoming', age: 21}
5.findIndex
findIndex方法返回数组中第一个满足条件的元素的下标,之后的值不再遍历,未找到返回 -1。
let arr = [{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19},{id: 3, name: 'xiaoqiang', age: 22}]
let index = arr.findIndex(item => item.age > 20)
index = 0
6.some
some方法只要遍历的数组中有一个满足条件的值就返回true,之后的值不再遍历,未找到返回false。
let arr = [{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19},{id: 3, name: 'xiaoqiang', age: 22}]
let value = arr.some(item => item.age < 20)
value = true
7.every
every方法只有当遍历的数组中所有的值都满足条件才返回true,有一个值不满足就返回false,之后的值不再遍历。
let arr = [{id: 1, name: 'xiaoming', age: 21}, {id: 2, name: 'xiaohong', age: 19},{id: 3, name: 'xiaoqiang', age: 22}]
let value = arr.every(item => item.age > 20)
value = false
以上所有方法的执行函数都接受3个值:①currentValue:必需,表示当前元素;②index:可选,表示当前元素的索引值;③arr:可选,表示当前元素所属的数组对象
8.concat()
concat() 方法用于连接两个或多个数组。
let arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
let arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
arr.concat(arr2) // George,John,Thomas,James,Adrew,Martin
9.slice
slice() 方法将数组部分的副本返回到新的数组对象中。这个对象是从 start 到 end 选择的。需要注意的是,此方法不会修改原始数组。此外,如果向其中一个数组添加新元素,则另一个数组不会受到影响。
// 数组的开始和结束索引
const arrNumbers = [1,3,5,6,7];
console.log(arrNumbers.slice(0, 3)); // [ 1, 3, 5 ]
// 复制数组
const arrNumbers = [1, 2, 3, 4, 5, 6];
const copyNumbers = arrNumbers.slice();
console.log(copyNumbers); // [ 1, 2, 3, 4, 5, 6 ]
copyNumbers[1] = 0;
console.log(copyNumbers); // [ 1, 0, 3, 4, 5, 6 ]
console.log(arrNumbers); // [ 1, 2, 3, 4, 5, 6 ]
// 复制从数组索引 n 开始的子数组。
const arrNumbers = [1, 2, 3, 4, 5, 6];
const copyNumbers = arrNumbers.slice(2);
console.log(copyNumbers); // [ 3, 4, 5, 6 ]