Skip to content

differenceBy

2つの配列の要素を変換関数で変換し、差集合を求めて新しい配列を返します。

typescript
const result = differenceBy(firstArr, secondArr, mapper);

参照

differenceBy(firstArr, secondArr, mapper)

2つの配列の要素を特定の基準で比較して差集合を求めたい場合は、differenceBy を使用してください。各要素を変換関数で変換した値を基準に比較し、最初の配列にのみ存在する要素を返します。

typescript
import { differenceBy } from 'es-toolkit/array';

// オブジェクト配列で id を基準に差集合を求めます。
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
const array2 = [{ id: 2 }, { id: 4 }];
differenceBy(array1, array2, item => item.id);
// 戻り値: [{ id: 1 }, { id: 3 }]
// id が 2 の要素は両方の配列に存在するため除外されます。

// 異なる型の配列も比較できます。
const objects = [{ id: 1 }, { id: 2 }, { id: 3 }];
const numbers = [2, 4];
differenceBy(objects, numbers, item => (typeof item === 'object' ? item.id : item));
// 戻り値: [{ id: 1 }, { id: 3 }]

文字列の長さを基準に差集合を求めることもできます。

typescript
import { differenceBy } from 'es-toolkit/array';

const words1 = ['apple', 'banana', 'cherry'];
const words2 = ['kiwi', 'pear'];
differenceBy(words1, words2, word => word.length);
// 戻り値: ['banana', 'cherry']
// 'apple' は 'kiwi' や 'pear' と長さが同じなので除外されます。

パラメータ

  • firstArr (T[]): 差集合を求める基準配列。
  • secondArr (U[]): 最初の配列から除外する要素を含む配列。
  • mapper ((value: T | U) => unknown): 両方の配列の要素をマッピングする関数。この関数が返す値を基準に要素を比較します。

戻り値

(T[]): 変換された値を基準に、最初の配列にのみ存在する要素で構成された新しい配列。

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