reduceRight 是 JavaScript 中从右向左归约数组的方法,语法为 arr.reduceRight(callback, [initialValue]),参数含累加器、当前值、索引和原数组,适用于右结合运算、路径拼接及嵌套对象构建等场景。

reduceRight 是 JavaScript 数组的内置方法,作用是从右向左对数组元素依次执行归约操作,最终返回一个单一值。它和 reduce 用法几乎一致,只是遍历方向相反:从最后一个元素开始,逐步向左处理到第一个元素。
基本语法与参数含义
调用形式:
arr.reduceRight(callback, [initialValue])其中:
-
callback:归约函数,接收四个参数:
accumulator(累加器,上一次调用返回的值)、currentValue(当前元素)、currentIndex(当前索引)、array(原数组);前两个最常用 - initialValue(可选):作为第一次调用 callback 时 accumulator 的初始值;若不传且数组只有一个元素,则直接返回该元素;若不传且数组为空,会报错
典型使用场景示例
比如把字符串数组拼成路径(右向左连接,适合模拟文件路径向上回溯):
// 结果:"home/user/docs/report.txt"
再比如计算数组的“右结合”表达式,如 2 ** 3 ** 2(JS 中指数运算是右结合),等价于 2 ** (3 ** 2):
// 先算 3 ** 2 = 9,再算 2 ** 9 = 512
注意 reduceRight 和 reduce 的关键差异
- 索引顺序不同:reduceRight 的
currentIndex从length - 1递减到0;reduce 则从0递增到length - 1 - 空数组行为:两者都不传
initialValue时,reduceRight 遇空数组也会抛TypeError - 稀疏数组处理:reduceRight 会跳过空槽(如
[1, , 3]中间索引 1 不触发 callback),这点和 reduce 一致
实用小技巧:配合解构或箭头函数简化写法
当逻辑简单时,可省略不必要参数:
[1, 2, 3, 4].reduceRight((sum, n) => sum + n, 0)// 10(等同于从右加:4 + 3 + 2 + 1)
也可用于构建嵌套结构,例如把路径数组转为嵌套对象(从右往左挂载):
const keys = ['user', 'profile', 'name'];const result = keys.reduceRight((obj, key) => ({ [key]: obj }), null);
// { user: { profile: { name: null } } }











