数组迭代方法和归并方法总结
一、迭代方法(对数组每一项都运行)
每个方法接受两个参数(以每一项为参数运行的函数, 作为函数运行上下文的作用域对象(可选))
传给每个方法的函数接收三个参数(数组元素,元素索引,数组本身)
1.filter():函数返回true的项会组成数组后返回。(过滤函数,将数组中满足条件的项组成新数组后返回)。
2.map():返回由每次函数调用的结果构成的数组。
3.forEach():没有返回值。
4.every():如果每一项都返回true,则这个方法返回true。
5.some():如果有一项返回true,则这个方法返回true。
// some every
let numbers = [ 1, 2, 3, 4, 5 ] let everyResult = numbers.every((item, index, array) => item > 2 ) console.log(everyResult) // false let someResult = numbers.some((item, index, array) => item > 2 ) console.log(someResult) // true
// filter
let filterResult = numbers.filter((item, index, array) => item > 2 ) cosole.log(filterResult) // [ 3, 4, 5 ]
// map
let mapResult = numbers.map((item, index, array) => item * 2 ) console.log(mapResult) // [ 2, 4, 6, 8, 10 ]
map还可以重新定义映射关系,返回新的object或者array
let people = [{name: '张三', age: 14}, {name: '李四', age: 16}] let nameArray = people.map((item, index, array) => item.name ) console.log(nameArray) // ['张三','李四']
// forEach
numbers.forEach(item, index, array) => { //执行某些操作 })
二、归并方法
归并函数的四个参数(上一个归并值,当前项,当前项的索引,数组本身)
1.reduce(对每一项都会运行的归并函数,可选的以之为归并起点的初始值) :从第一项遍历至最后一项,这个函数返回的任何值都会作为下一次调用的第一个参数。,若没有传入可选的第二个参数,则第一次迭代将从数组的第二项开始。
2.reduceRight:一切同上,只不过数组遍历方向为最后一项遍历至第一项。
let values = [ 1, 2, 3, 4, 5 ] let sum = values.reduce((prev, cur, index, array) => prev + cur ) console.log(sum) // 15 //第一次遍历: //prev:1,cur:2,index:1 //第二次遍历: //prev:3,cur:3,index:2