JavaScript reduceRight 方法
最后修改于 2025 年 4 月 4 日
在本文中,我们将展示如何使用 JavaScript 中的 reduceRight 方法从右到左规约数组。
从右到左的数组规约
reduceRight 方法从右到左在每个数组元素上执行一个规约函数,从而产生单个输出值。它与 reduce 类似,但以相反的方向处理数组。
当操作顺序很重要时,此方法很有用,例如在处理数学表达式或嵌套函数调用时。reduceRight 方法维护一个累加器,该累加器会随着每次迭代而更新。
规约函数接受四个参数:累加器、当前值、当前索引和源数组。累加器累积回调的返回值。可以提供一个初始值作为 reduceRight 的第二个参数。
基本 reduceRight 示例
以下示例演示了 reduceRight 方法的基本用法,用于从右到左连接字符串。
const words = ['world', ' ', 'hello']; const sentence = words.reduceRight((acc, word) => acc + word); console.log(sentence);
我们创建一个单词数组,并使用 reduceRight 从右到左连接它们。累加器从最后一个元素 ('hello') 开始,并通过在每个后续元素之前添加它来构建字符串。
$ node main.js hello world
使用 reduceRight 计算阶乘
reduceRight 方法可用于操作顺序很重要的数学运算。
const numbers = [1, 2, 3, 4]; const factorial = numbers.reduceRight((acc, num) => acc * num); console.log(factorial);
我们通过从右到左乘以数字来计算 4 的阶乘。该操作等效于 4 * 3 * 2 * 1。使用 reduceRight 可确保乘法按正确的顺序进行。
$ node main.js 24
从右侧展平嵌套数组
reduceRight 方法可以从最右边的元素开始展平嵌套数组。
const nested = [[0, 1], [2, 3], [4, 5]]; const flattened = nested.reduceRight((acc, val) => acc.concat(val), []); console.log(flattened);
我们从最右边的子数组开始展平嵌套数组。空数组 [] 被提供为初始值。每个子数组从右到左连接到累加器。
$ node main.js [4, 5, 2, 3, 0, 1]
使用 reduceRight 组合函数
reduceRight 方法非常适合需要从右到左应用的函数组合。
const add5 = x => x + 5; const multiply3 = x => x * 3; const subtract2 = x => x - 2; const operations = [add5, multiply3, subtract2]; const composed = operations.reduceRight((acc, fn) => fn(acc), 4); console.log(composed);
我们组合了三个对数字进行运算的函数。这些函数从右到左应用于初始值 4。顺序是:减去 2,然后乘以 3,然后加上 5。
$ node main.js 17
使用 reduceRight 反转数组
reduceRight 方法可用于创建数组的倒序版本。
const letters = ['a', 'b', 'c', 'd']; const reversed = letters.reduceRight((acc, letter) => [...acc, letter], []); console.log(reversed);
我们通过从右到左累积元素来创建反转数组。展开运算符 ... 用于在每次迭代中创建一个新数组。空数组 [] 用作初始累加器。
$ node main.js ['d', 'c', 'b', 'a']
来源
在本文中,我们演示了如何使用 reduceRight() 方法在 JavaScript 中从右到左处理数组。
作者
列出 所有 JS 数组函数。