JavaScript的reduce方法

[[JavaScript]] 中的 reduce()​​​ 方法用于将数组中的元素缩减为 1 个值,最终返回的这个值可以是任意类型(Number, String, Object, Array 等…)

接收的参数:

arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

reduce()方法接收两个参数:一个回调函数和一个可选的初始值

  • 回调函数中接收 4 个参数:

      1. 累加器(上个遍历返回的值)
      2. 当前值
      3. 当前索引
      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 开始。

参考资料: