intersectionWith
2つの要素が一致するかどうかを判断するカスタム関数を基準に、2つの配列の交差部分を返します。
この関数は、パラメータとして2つの配列とカスタム一致関数を受け取ります。 この関数は、カスタム一致関数の戻り値を基準に、両方の配列に含まれる要素を新しい配列として返します。 実際の実装を見ると、最初の配列の要素のうち、2番目の配列のどの要素とも一致関数の基準で等しくない要素を除外した新しい配列を返します。
インターフェース
typescript
function intersectionWith<T, U>(firstArr: T[], secondArr: U[], areItemsEqual: (x: T, y: U) => boolean): T[];
パラメータ
firstArr
(T[]
): 比較する最初の配列。secondArr
(U[]
): 比較する2番目の配列。areItemsEqual
((x: T, y: U) => boolean
): 2つの要素が一致するかどうかを判断する一致関数です。2つの要素が一致する場合はtrue
を、一致しない場合はfalse
を返すようにしてください。
戻り値
(T[]
): カスタム一致関数の戻り値を基準に、両方の配列に含まれる要素を含む新しい配列。
例
typescript
const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
const array2 = [{ id: 2 }, { id: 4 }];
const areItemsEqual = (a, b) => a.id === b.id;
const result = intersectionWith(array1, array2, areItemsEqual);
// `areItemsEqual` 基準でarray1とarray2の両方に含まれている要素からなる [{ id: 2 }] が返されます。
const array1 = [
{ id: 1, name: 'jane' },
{ id: 2, name: 'amy' },
{ id: 3, name: 'michael' },
];
const array2 = [2, 4];
const areItemsEqual = (a, b) => a.id === b;
const result = intersectionWith(array1, array2, areItemsEqual);
// 結果は [{ id: 2, name: 'amy' }] になります。この要素は、2番目の配列の要素と一致するidを持っているためです。