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: PropertyKey): boolean;
function some<T>(arr: T[], predicate: Partial<T>): boolean;
function some<T extends Record<string, unknown>>(object: T): boolean;
function some<T extends Record<string, unknown>>(
object: T,
predicate: (value: T[keyof T], key: keyof T, object: T) => unknown
): boolean;
function some<T extends Record<string, unknown>>(object: T, predicate: Partial<T[keyof T]>): boolean;
function some<T extends Record<string, unknown>>(object: T, predicate: [keyof T[keyof T], unknown]): boolean;
function some<T extends Record<string, unknown>>(object: T, predicate: PropertyKey): boolean;
パラメータ
arr
(T[]
) またはobject
(T
): 反復する配列です。predicate
:配列の場合:
- 検査関数 (
(item: T, index: number, arr: T[]) => unknown
): 各要素に対して検査する関数。 - 部分オブジェクト (
Partial<T>
): 部分的に一致するプロパティを持つ最初の要素を返す。 - プロパティ-値ペア (
[keyof T, unknown]
): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。 - プロパティ名 (
PropertyKey
): 真と評価される値を持っているか確認するプロパティ名。
- 検査関数 (
オブジェクトの場合:
- 検査関数 (
(value: T[keyof T], key: keyof T, object: T) => unknown
): 条件を満たすかどうかを確認する関数。 - 部分オブジェクト (
Partial<T[keyof T]>
): 部分的に一致するプロパティを持つ最初の要素を返す。 - プロパティ-値ペア (
[keyof T[keyof T], unknown]
): 最初が一致させるプロパティ、2番目が一致させる値を表すタプル。 - プロパティ名 (
PropertyKey
): 真と評価される値を持っているか確認するプロパティ名。
- 検査関数 (
戻り値
(boolean
): 述語チェックを通過する要素があればtrue
、それ以外の場合はfalse
。
例
配列の場合
typescript
import { some } from 'es-toolkit/compat';
// 検査関数を使う場合
let items = [1, 2, 3, 4, 5];
let result = some(items, item => item > 3);
console.log(result); // true
// 部分オブジェクトを使う場合
items = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
];
result = some(items, { name: 'Bob' });
console.log(result); // true
// プロパティ-値ペアを使う場合
items = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
];
result = some(items, ['name', 'Bob']);
console.log(result); // true
// プロパティ名を使う場合
items = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
];
result = some(items, 'name');
console.log(result); // true
オブジェクトの場合
typescript
import { some } from 'es-toolkit/compat';
// 検査関数を使う場合
let obj = { a: 1, b: 2, c: 3 };
let result = some(object, value => value > 2);
console.log(result); // true
// 部分オブジェクトを使う場合
obj = { a: { id: 1, name: 'Alice' }, b: { id: 2, name: 'Bob' } };
result = some(obj, { name: 'Bob' });
console.log(result); // true
// プロパティ-値ペアを使う場合
obj = { alice: { id: 1, name: 'Alice' }, bob: { id: 2, name: 'Bob' } };
result = some(obj, ['name', 'Bob']);
console.log(result); // true
// プロパティ名を使う場合
obj = { a: { id: 1, name: 'Alice' }, b: { id: 2, name: 'Bob' } };
result = some(obj, 'name');
console.log(result); // true