Skip to content

reduceRight

The reduceRight() method works like reduce() but iterates through the array from right to left. It is useful for composing functions, rebuilding a structure from the end, or processing a stack.

Interactive example

Syntax

Classic signature

typescript
function reduceRight<
	GenericInput extends readonly unknown[],
	GenericReduceFrom extends number | string | bigint | boolean | ArrayReduceFromResult,
	GenericExit extends ArrayReduceExit = ArrayReduceExit<never>
>(
	input: GenericInput,
	startValue: GenericReduceFrom,
	theFunction: (
		params: ArrayReduceFunctionParams<
			GenericInput[number],
			ArrayReduceFromValue<GenericReduceFrom>
		>
	) => ArrayReduceNext<ArrayReduceFromValue<GenericReduceFrom>> | GenericExit
): ArrayReduceFromValue<GenericReduceFrom> | (IsEqual<GenericExit, ArrayReduceExit> extends true ? never : GenericExit["-exit"])

Curried signature

typescript
function reduceRight<
	GenericInput extends readonly unknown[],
	GenericReduceFrom extends number | string | bigint | boolean | ArrayReduceFromResult,
	GenericExit extends ArrayReduceExit = ArrayReduceExit<never>
>(
	startValue: GenericReduceFrom,
	theFunction: (
		params: ArrayReduceFunctionParams<
			GenericInput[number],
			ArrayReduceFromValue<GenericReduceFrom>
		>
	) => ArrayReduceNext<ArrayReduceFromValue<GenericReduceFrom>> | GenericExit
): (
	input: GenericInput
) => ArrayReduceFromValue<GenericReduceFrom> | (IsEqual<GenericExit, ArrayReduceExit> extends true ? never : GenericExit["-exit"])

Parameters

Identical to those of reduce, but the iteration starts with the last element of the array.
In particular:

  • params.self exposes the full array (handy for knowing the length or comparing an index).
  • params.nextPush() adds values to lastValue when it is an array, without needing to call next() after a push.

Return value

The result of the accumulation from right to left (via next(), nextWithObject(), or nextPush()), or the value passed to exit() if an early exit occurs.

See also

  • reduce - Left → right version
  • join - Concatenates strings with an explicit separator

Sources

Released under the MIT license.