reduce() 方法对数组的每个元素依次执行自定义回调函数,返回值为回调函数 return 的处理结果。
先看一个示例:
1 | const arr = [1, 2, 3, 4]; |
语法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数
方法接收两个参数:
- callback() 回调函数。其接收四个参数:
- accumulator:累计器,累计回调函数的值。
- current value:当前值。
- current index: 当前值的索引。(可选)
- souce map: 源数组,也就是调用 reduce() 方法的数组。(可选)
- initVal: 初始值。(可选)
返回值
回调函数累计处理的结果。
注意
如果传递 initVal,则
- accumulator 累计器为 initVal, 不传递则为数组的第一项。
- currentVal 当前值为数组第一项,不传递则为数组第二项。
- currentIndex 当前索引为数组第一项的索引 0,不传递则为 1。
当给空数组调用 reduce 方法,且不传递初始值时,将报错。
如果数组仅有一个元素,且没有提供初始值,或者提供了初始值,但数组为空,会将唯一值返回,并且 callback 不再执行。
更多 reduce 的使用示例可访问 MDN 之 reduce