Skip to content

reduceRight

INFO

出于兼容性原因,此函数仅在 es-toolkit/compat 中提供。它可能具有替代的原生 JavaScript API,或者尚未完全优化。

es-toolkit/compat 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 这里

使用迭代函数将数组或对象减少为单个值。reduce与之不同的是,它是从右侧开始的。

reduceRight() 函数遍历数组中的每个元素或对象的值,并逐个应用一个特殊函数(称为“reducer”)。 此函数使用上一步的结果和当前元素来执行计算。 遍历所有元素后,该函数会给出一个最终结果。

reduceRight() 函数开始时,没有可用的上一步结果。 如果提供了初始值,则从该值开始。 如果没有,则使用数组的第一个元素或对象的第一个值,并从第二个元素或值开始计算。

签名

typescript
function reduceRight<T, U>(
  collection: T[],
  iteratee: (accumulator: U, value: T, index: number, collection: T[]) => U,
  initialValue: U
): U;
function reduceRight<T>(collection: T[], iteratee: (accumulator: T, value: T, index: number, collection: T[]) => T): T;

function reduceRight<T, U>(
  collection: ArrayLike<T>,
  iteratee: (accumulator: U, value: T, index: number, collection: ArrayLike<T>) => U,
  initialValue: U
): U;
function reduceRight<T>(
  collection: ArrayLike<T>,
  iteratee: (accumulator: T, value: T, index: number, collection: ArrayLike<T>) => T
): T;

function reduceRight<T extends object, U>(
  collection: T,
  iteratee: (accumulator: U, value: T[keyof T], key: keyof T, collection: T) => U,
  initialValue: U
): U;
function reduceRight<T extends object>(
  collection: T,
  iteratee: (accumulator: T[keyof T], value: T[keyof T], key: keyof T, collection: T) => T[keyof T]
): T[keyof T];

参数

  • collection (T[] | ArrayLike<T> | Record<PropertyKey, T>): 要迭代的集合。
  • iteratee ((accumulator: U, value: T, index, collection) => any)): 每次迭代时调用的函数。
  • initialValue (U): 初始值。

返回值

(any): 返回累积值。

示例

typescript
// Using a reducer function
const array = [1, 2, 3];
reduceRight(array, (acc, value) => acc + value, 0); // => 6

// Using a reducer function with initialValue
const array = [1, 2, 3];
reduceRight(array, (acc, value) => acc + value % 2 === 0, true); // => false

// Using an object as the collection
const obj = { a: 1, b: 2, c: 3 };
reduceRight(obj, (acc, value) => acc + value, 0); // => 6

采用 MIT 许可证发布。