方法解释
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]; |