跳到主要内容

JavaScript 数组的 reduceRight() 方法详解

reduceRight() 方法通过从右到左执行数组上的两个值的回调函数,将数组减少为单个值。

示例

let numbers = [1, 2, 3, 4];

// 函数添加 numbers 数组的最后两个值
function sum_reducer(accumulator, currentValue) {
return accumulator + currentValue;
}

// 在减少 numbers 数组后返回单个值
let sum = numbers.reduceRight(sum_reducer);

console.log(sum);

// 输出:10

reduceRight() 语法

reduceRight() 方法的语法为:

arr.reduceRight(callback(accumulator, currentValue), initialValue);

这里,arr 是一个数组。

reduceRight() 参数

reduceRight() 方法可以接受 两个 参数:

  • callback - 在每个数组元素上执行的函数。它接受:

  • accumulator - 它累积回调的返回值。如果提供,第一次调用时为 initialValue

  • currentValue - 数组中正在传递的当前元素。

initialValue(可选)- 将在第一次调用 callback() 时传递的值。如果未提供,最后一个元素在第一次调用时充当累加器,并且不会在其上执行 callback()

注意: 在没有 initialValue 的空数组上调用 reduceRight() 将抛出 TypeError

reduceRight() 返回值

  • 返回减少数组后的结果值。

注释

  • reduceRight() 从右到左为每个值执行给定的函数。
  • reduceRight() 不改变原始数组。
  • 提供 initialValue 几乎总是更安全。

示例 1:使用 reduceRight() 方法

let numbers = [1, 2, 3, 4, 5, 6];

// 函数添加 numbers 数组的最后两个值
function sum_reducer(accumulator, currentValue) {
return accumulator + currentValue;
}

// 在减少 numbers 数组后返回单个值
let sum = numbers.reduceRight(sum_reducer);

console.log(sum);

输出

21

在上面的示例中,我们使用 reduceRight() 方法将 numbers 数组转换为单个值。

我们定义了一个 sum_reducer() 函数,它接受两个参数并返回它们的和。

由于我们没有传递 initialValue,所以最后一个元素 6 是 accumulator,5 是 currentValue。

reduceRight() 方法执行回调 sum_reducer(),将 6+5 的结果和(新的累加器)与新的 currentValue 4 相加。

这个过程一直持续到 numbers 的第一个值。

示例 2:在 reduceRight() 方法中传递 initialValue

let expense = [50, 300, 20, 100, 1800];

// 函数返回两个值的和
function add(accumulator, currentValue) {
return accumulator + currentValue;
}

// 将 0 添加到 expense 的最后一个值(即 1800)
// 并执行回调 add()
let result = expense.reduceRight(add, 0);

console.log(result);

输出

2270

在上面的示例中,我们传递了 initialValue- 0,它充当累加器。

numbers.reduceRight(add, 0) 首先将 0 与 expense 数组的最后一个值即 1800 相加。然后执行 add(),将数组的其余元素(从右到左)相加。

该方法最终返回单个值和,即 2270

推荐阅读: JavaScript 数组 reduce()