Skip to main content

reduceRight()

reduceRight<T, Accumulator>(collection, iteratee, accumulator): Accumulator

reduceRight<T>(collection, iteratee): T | undefined

reduceRight<T, Accumulator>(collection, iteratee, accumulator): Accumulator

reduceRight<T>(collection, iteratee): T[keyof T] | undefined

This method is like reduce except that it iterates over elements of collection from right to left.

DEPRECATED

Use array.reduceRight() or Object.values().reverse().reduce() directly instead.


Type Parameters​

T: T​

The type of elements in the array.

Accumulator: Accumulator​

The type of the accumulated value.


Parameters​

Overload 1:

collection: T[]​

The collection to iterate over.

iteratee: (accumulator, value, index, array) => Accumulator​

The function invoked per iteration.

accumulator: Accumulator​

The initial value.

Overload 2:

collection: T[]​

The collection to iterate over.

iteratee: (accumulator, value, index, array) => T​

The function invoked per iteration.

Overload 3:

collection: T​

The collection to iterate over.

iteratee: (accumulator, value, key, object) => Accumulator​

The function invoked per iteration.

accumulator: Accumulator​

The initial value.

Overload 4:

collection: T​

The collection to iterate over.

iteratee: (accumulator, value, key, object) => T[keyof T]​

The function invoked per iteration.


Returns: Accumulator​

The accumulated value.


See Also​


Since​

2.0.0


Also known as​

reduceRight (Lodash, es-toolkit, Remeda, Ramda, Effect) · ❌ (Radashi, Modern Dash, Antfu)


Example​

const numbers = [1, 2, 3, 4, 5];

// ❌ Deprecated approach
const rightSum = reduceRight(numbers, (acc, num) => acc + num, 0);
console.log(rightSum); // 15

// βœ… Recommended approach (for arrays)
const rightSumNative = numbers.reduceRight((acc, num) => acc + num, 0);
console.log(rightSumNative); // 15

// βœ… Recommended approach (for objects)
const obj = { a: 1, b: 2, c: 3 };
const rightSumObj = Object.values(obj).reverse().reduce((acc, num) => acc + num, 0);
console.log(rightSumObj); // 6

How it works?​

Reduces collection from right to left. Deprecated: Use array.reduceRight() directly.

Native Equivalent​

// ❌ reduceRight(arr, fn, init)
// βœ… arr.reduceRight(fn, init)

Use Cases​

Process from right to left πŸ“Œβ€‹

Reduce array starting from the last element.

const chars = ["a", "b", "c"];
chars.reduceRight((acc, c) => acc + c, "");
// => "cba"

Build right-associative structure​

Create structures where order matters right-to-left.

const ops = [1, 2, 3];
ops.reduceRight((acc, n) => ({ value: n, next: acc }), null);
// => { value: 1, next: { value: 2, next: { value: 3, next: null } } }

Compose functions right-to-left​

Apply functions in reverse order.

const fns = [x => x + 1, x => x * 2, x => x - 3];
fns.reduceRight((val, fn) => fn(val), 10);
// => (10 - 3) * 2 + 1 = 15