Skip to content

iteratee

INFO

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

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

创建一个函数,该函数从集合中的元素返回一个值。

你可以使用以下类型的参数调用 iteratee

  • 函数: 返回原样的函数,该函数将使用集合中的元素进行调用。
  • 属性名: 返回元素中指定属性的值。
  • 属性-值对: 返回一个布尔值,指示元素的属性是否与给定值匹配。
  • 部分对象: 返回一个布尔值,指示元素是否与部分对象的属性匹配。

如果你不提供任何参数或传递 null,此函数将返回一个简单返回其输入的函数

签名

typescript
function iteratee(value?: null): (value: T) => T;
function iteratee<F extends (...args: any[]) => unknown>(func: F): F;
function iteratee(value: symbol | number | string | object): (...args: any[]) => any;
function iteratee(
  value?: symbol | number | string | object | null | ((...args: any[]) => unknown)
): (...args: any[]) => any;

参数

  • value (symbol | number | string | object | null | ((...args: any[]) => any)): 将要转换为迭代器的值。

返回值

((...args: any[]) => unknown): 返回新的迭代器函数。

示例

typescript
const func = iteratee();
[{ a: 1 }, { a: 2 }, { a: 3 }].map(func) // => [{ a: 1 }, { a: 2 }, { a: 3 }]

const func = iteratee((object) => object.a);
[{ a: 1 }, { a: 2 }, { a: 3 }].map(func) // => [1, 2, 3]

const func = iteratee('a');
[{ a: 1 }, { a: 2 }, { a: 3 }].map(func) // => [1, 2, 3]

const func = iteratee({ a: 1 });
[{ a: 1 }, { a: 2 }, { a: 3 }].find(func) // => { a: 1 }

const func = iteratee(['a', 1]);
[{ a: 1 }, { a: 2 }, { a: 3 }].find(func) // => { a: 1 }