简介
reduce 的原型链是 Array.prototype.reduce(),由此我们可以知道 reduce 只能在数组上使用。
官方的解释:reduce() 方法对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。
语法
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
参数
返回值
描述
reduce 为数组中的每一个元素依次执行 callback 函数,不包括数组中被删除或从未被赋值的元素。
callback 函数第一次执行时的两种情况:
总结:
- 如果没有提供 initialValue,reduce 会从索引 1 的地方开始执行 callback 方法,跳过第一个索引。如果提供 initialValue,从索引 0 开始。
- 如果数组为空且没有提供 initialValue,会抛出 TypeError。
- 如果数组仅有一个元素并且没有提供 initialValue,或者有提供 initialValue 但是数组为空,那么此唯一值将被返回,并且 callback 不会被执行。
- 提供初始值通常更安全。
reduce() 如何运行
例子
数组里所有值的和
累加对象数组里的值
将二维数组转化为一维
计算数组中每个元素出现的次数
按属性对 object 分类
使用扩展运算符和initialValue绑定包含在对象数组中的数组
数组去重
按顺序运行 Promise
功能型函数管道
使用 reduce 实现 map