reduceright 是从右到左累积的数组方法,以初始值或最右元素为累加器,依次与左侧元素运算;空数组无初始值时抛出 typeerror,单元素数组不执行回调。

reduceRight 是 JavaScript 数组方法,它从数组的最后一个元素开始,向左依次执行回调函数,将前一次的计算结果(累加器)与当前元素结合,最终返回一个单一值。
核心执行顺序:从右到左累积
和 reduce 相反,reduceRight 不是从索引 0 开始,而是从 array.length - 1 开始,逐步递减索引,直到索引为 0。每次调用回调时,上一轮的返回值作为新的累加器(accumulator),当前元素作为 currentValue。
- 若提供了初始值(initialValue),第一次回调中 accumulator 就是该初始值,currentValue 是数组最右侧元素(即最后一个)
- 若未提供初始值,accumulator 初始为最右侧元素,currentValue 为倒数第二个元素,从倒数第二项开始迭代
- 空数组且无初始值时,会抛出
TypeError
参数结构与回调签名
语法:arr.reduceRight(callback(accumulator, currentValue, currentIndex, array), initialValue)
- accumulator:上一次回调的返回值,或初始值(如有)
- currentValue:当前正在处理的元素(从右往左)
- currentIndex:当前元素索引(从大到小变化,如 4→3→2→1→0)
- array:原数组本身(只读)
一个直观例子:右向累加字符串
比如对 ['a', 'b', 'c'] 使用 reduceRight 拼接:
['a', 'b', 'c'].reduceRight((acc, cur) => acc + cur, '')
执行过程如下:
- 初始 acc = '',cur = 'c' → 返回 'c'
- acc = 'c',cur = 'b' → 返回 'cb'
- acc = 'cb',cur = 'a' → 返回 'cba'
- 最终结果:'cba'
对比 reduce 会得到 'abc',这清晰体现了方向差异。
注意边界情况
使用 reduceRight 时需留意:
- 单元素数组且无初始值:直接返回该元素,不执行回调
- 数组为空且提供初始值:直接返回初始值
- 数组为空且未提供初始值:抛出错误,不可忽略
- 稀疏数组中,reduceRight 会跳过空槽(holes),只处理实际存在的索引项
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











