reduce方法对数组中的每个元素执行一个reducer函数,将其减少为单个值。 reduce的语法如下:
let result = arr.reduce(reducer, initialValue);
reducer函数包含四个参数:
- accumulator - 累计器,默认为initialValue的值,累计回调函数的返回值
- currentValue - 数组中正在处理的元素
- index - 当前元素的索引
- array - reduce()被调用的数组 示例:
let numbers = [1, 2, 3];
let sum = numbers.reduce((accumulator, current) => {
return accumulator + current;
}, 0);
console.log(sum); // 6
上面代码中,reduce遍历numbers数组,将每个元素累加至accumulator,并将返回值赋值给sum。 reduce的初值initialValue通常会设置为0或1,这样可以直接返回乘积或总和。 你也可以省略initialValue,这时accumulator会从索引1开始计算:
let numbers = [1, 2, 3];
let sum = numbers.reduce((acc, cur) => acc + cur);
console.log(sum); // 6
reduce方法非常适合将数组转换为单个值,常见的用例有:
- 求数组元素之和
- 数组元素乘积
- 统计数组中某个元素的个数
- 将二维数组转化为一维
- 数组去重等 通过reduce方法,可以避免手动初始化和更新一个累计变量的麻烦。