reduce方法
reduce 方法对数组的每个元素执行提供的reducer函数,将结果汇为单个返回值。
1 | arr.reduce(callback(accumulator, currentValue, index, array), initialValue) |
- callback 执行数组中每个值的函数,包括四个参数。
- accumulator回调
callback
方法执行后的返回值 - currentValue数组中正在处理的当前值
- index数组中正在处理的当前值的索引
- array调用
reduce
方法的数组
- initialValue设置的初始值(可选)
注意:若提供了初始值 initialValue
,将作为第一次调用callback函数时的第一个参数 accumulator
的值,索引 index
从0开始,迭代次数为 arr.length
;若没有提供初始值initialValue
,则把数组第一个值作为callback第一个参数的值,索引 index
从1开始,迭代次数为 arr.length - 1
使用场景
- 数组累加
1 | let sum = [1, 2, 3, 5].reduce((acc, cur) => { |
- 对象属性和
1 | let sum = [{x: 1}, {x: 3}, {x: 5}, {x: 6}].reduce((acc, current) => { |
- Promise 队列
1 | let promiseFn = function () { |
- 计算数组中每个元素出现的次数
1 | let names = ['alice', 'Bob', 'lee', 'mark'] |
- 数组去重
1 | let arr = ['1', '2', '2', '3', '4'].reduce((acc, cur) => { |
- 二维数组转行成一维数组
1 | let arr = [['1', '2'], ['3', '4']].reduce((acc, cur) => { |