reduce()
和 reduceRight()
都是 JavaScript 数组的方法,它们可以遍历数组的每一项,并将它们合并成一个最终的结果。这两个方法的主要区别在于遍历的方向:
reduce()
: 从数组的第一个元素开始,逐个向后遍历,就像你从左到右读句子一样。reduceRight()
: 从数组的最后一个元素开始,逐个向前遍历,就像你从右到左读句子一样。
语法
这两个方法的语法非常相似:
array.reduce(callbackFn, initialValue);
array.reduceRight(callbackFn, initialValue);
- array: 你要操作的数组。
- callbackFn: 每次遍历都会执行的函数,它接收四个参数:
- previousValue: 上一次调用 callbackFn 的返回值,或者初始值(如果有提供)。
- currentValue: 当前正在处理的数组元素。
- currentIndex: 当前元素的索引。
- array: 正在被遍历的数组。
- initialValue(可选): 作为第一次调用 callbackFn 时的 previousValue 的值。如果没有提供,则使用数组的第一个元素。
示例代码
const numbers = [1, 2, 3, 4, 5];
// 使用 reduce() 计算总和
const sum1 = numbers.reduce((previousValue, currentValue) => previousValue + currentValue, 0);
console.log(sum1); // 输出: 15
// 使用 reduceRight() 计算总和
const sum2 = numbers.reduceRight((previousValue, currentValue) => previousValue + currentValue, 0);
console.log(sum2); // 输出: 15
在这个例子中,我们使用 reduce() 和 reduceRight() 计算数组 numbers 中所有元素的总和。callbackFn 函数将 previousValue 和 currentValue 相加,并将结果返回。