some
INFO
出于兼容性原因,此函数仅在 es-toolkit/compat
中提供。它可能具有替代的原生 JavaScript API,或者尚未完全优化。
从 es-toolkit/compat
导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 这里。
检查数组中是否有元素满足给定的条件。
您可以通过以下几种方式指定条件:
- 谓词函数:如果提供一个谓词函数,该函数将应用于每一项。返回
true
的第一个项将被选中。 - 部分对象:如果提供一个部分对象,该函数将返回第一个匹配部分对象属性的项。
- 属性-值对:如果提供一个属性-值对,该函数将返回第一个匹配该属性和值的项。
- 属性名称:如果提供一个属性名称,该函数将返回第一个指定属性具有真值的项。
如果没有提供条件,该函数会检查数组中是否有任何值为真的元素。
签名
typescript
function some<T>(arr: T[]): boolean;
function some<T>(arr: T[], predicate: (item: T, index: number, arr: any) => unknown): boolean;
function some<T>(arr: T[], predicate: [keyof T, unknown]): boolean;
function some<T>(arr: T[], predicate: string): boolean;
function some<T>(arr: T[], predicate: Partial<T>): boolean;
参数
arr
(T[]
): 要迭代的数组。predicate
(((item: T, index: number, arr: any) => unknown) | Partial<T> | [keyof T, unknown] | string
):- 谓词函数 (
(item: T, index: number, arr: T[]) => unknown
): 一个函数,接受项、其索引和数组,如果项符合条件则返回真值。 - 部分对象 (
Partial<T>
): 指定要匹配的属性的部分对象。 - 属性-值对 (
[keyof T, unknown]
): 一个数组,第一个元素是属性键,第二个元素是要匹配的值。 - 属性名称 (
string
): 要检查其真值的属性名称。
- 谓词函数 (
返回值
(boolean
): 如果任何元素通过了谓词检查,则返回true
,否则返回false
。
示例
typescript
some([1, 2, 3, 4], n => n % 2 === 0);
// => true
some([{ a: 1 }, { a: 2 }, { a: 3 }], { a: 2 });
// => true
some([{ a: 1 }, { a: 2 }, { a: 3 }], ['a', 2]);
// => true
some([{ a: 1 }, { a: 2 }, { a: 3 }], 'a');
// => true