Skip to content

overSome (Lodash互換性)

Array.someを使用してください

このoverSome関数は、条件関数を変換して検査する過程で追加のオーバーヘッドが発生します。

代わりに、より高速で現代的なArray.someメソッドを使用してください。

条件関数のうち一つでも真と評価される値を返すかどうかを確認する関数を作成します。

typescript
const anyValidator = overSome(predicates);

参照

overSome(...predicates)

複数の条件関数を受け取って与えられた値が条件のうち一つでも満たすかどうかを確認する関数を生成します。柔軟な条件検査や代替検証に便利です。

typescript
import { overSome } from 'es-toolkit/compat';

// 文字列または数値かどうかを確認します
const isStringOrNumber = overSome([value => typeof value === 'string', value => typeof value === 'number']);

isStringOrNumber('hello'); // => true
isStringOrNumber(42); // => true
isStringOrNumber(true); // => false

// 複数の条件のうち一つでも満たすかどうかを確認します
const hasValidProperty = overSome([
  obj => obj.name && obj.name.length > 0,
  obj => obj.email && obj.email.includes('@'),
  obj => obj.phone && obj.phone.length >= 10,
]);

hasValidProperty({ name: 'John' }); // => true
hasValidProperty({ email: 'john@example.com' }); // => true
hasValidProperty({ phone: '1234567890' }); // => true
hasValidProperty({ age: 30 }); // => false

オブジェクトのプロパティも検査できます。

typescript
import { overSome } from 'es-toolkit/compat';

// 複数の条件のうち一つでもマッチするかどうかを確認します
const matchesAnyCondition = overSome([
  'isActive', // isActiveプロパティが真と評価されるか
  { role: 'admin' }, // roleが'admin'か
  ['status', 'vip'], // statusが'vip'か
]);

matchesAnyCondition({ isActive: true }); // => true
matchesAnyCondition({ role: 'admin' }); // => true
matchesAnyCondition({ status: 'vip' }); // => true
matchesAnyCondition({ role: 'user', status: 'normal' }); // => false

パラメータ

  • ...predicates (Array<Function | string | object | Array>): 検査する条件関数です。関数、プロパティ名、オブジェクト、プロパティ-値ペアなどになります。

戻り値

((...args: any[]) => boolean): 条件のうち一つでも満たせばtrue、すべて満たさなければfalseを返す関数を返します。

MIT ライセンスの下で配布されています。