方法解释
arr.reduce(callback[, initialValue])
对数组中的每一个元素执行你提供的一个回调方法(callback)并返回一个结果值。下面我们通过示例来详细了解下。
示例(累加操作)
1 | // 定义一个数组 |
callback 函数接收的 4 个参数说明
- 累加值(acc)(理解:上一次
callback
的返回值,当做下一次callback
的第一个参数。) - 当前值(cur)
- 当前索引(currentIndex)
- 原数组(sourceArr)
理解reduce()
- 如果没有提供初始值(
initialValue
),reduce()
将从数组索引 1(也就是第 2 个元素)开始执行callback
(跳过数组的第 1 个元素),此时,acc
等于数组的第一个元素值(即arr[0]
),cur
等于数组的第 2 个元素值(即arr[1]
) - 如果提供了初始值(
initialValue
),reduce()
将从数组索引 0(也就是第 1 个元素)开始执行callback
,此时,acc
等于initialValue
的值,cur
等于数组的第 1 个元素值(即arr[0]
)
边缘情况
- 如果数组
arr
为空且没有提供初始值initialValue
,代码将报TypeError
错误 - 如果数组只有一个值(
arr.length === 1
)且没有提供初始值initialValue
或 提供了初始值initialValue
但数组arr
为空,则直接返回那个唯一的值且回调方法callback
不会被调用
1 | const arr = [1]; |