JavaScript的reduce方法
[[JavaScript]] 中的 reduce()
方法用于将数组中的元素缩减为 1 个值,最终返回的这个值可以是任意类型(Number, String, Object, Array 等…)
接收的参数:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
reduce()方法接收两个参数:一个回调函数和一个可选的初始值
回调函数中接收 4 个参数:
- 累加器(上个遍历返回的值)
- 当前值
- 当前索引
- 源数组(被遍历的那个数组 arr)
初始值会作为第一次调用
callback
函数时的第一个参数(也就是累加器)的值。
例 1:求数组的和 生成数组的方法参见 [[JavaScript快速生成自然数数组]]
let arr = Array.from({length: 100}, (item, index) => index + 1); // 生成一个包含 1 ~ 100 的数组
let sum = arr.reduce((prev, curr) => prev + curr);
console.log(sum);
关于初始值(initialValue)
- 当回调函数第 1 次执行时,如果没有提供初始值,那么第 1 个参数(
accumulator
)取数组中的第 1 个值,第 2 个参数(currentValue
)取数组中的第 2 个值。 - 如果提供了初始值,该初始值会作为回调函数的第 1 个参数(
accumulator
),第 2 个参数(currentValue
)会取数组中的第 1 个值。 - **注意:**如果没有提供
initialValue
,reduce 会从索引 1 的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue
,从索引 0 开始。
参考资料: