重複する配列オブジェクトをフィルターを使用して取り除く方法
filterメソッドとindexOfまたはincludesを組み合わせて、重複した配列オブジェクトをフィルタリングできます。
フィルタとindexOfを使用するコード例を以下に示します。
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
let uniqueArr = arr.filter((obj, index, array) => {
return array.findIndex(item => item.id === obj.id) === index;
});
console.log(uniqueArr);
この文を日本語で自然に言い換えて、オプションは1つだけでお願いします: 出力結果は次のとおりです:
[
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]
indexOf()関数のサンプルコード:
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
let uniqueArr = arr.filter((obj, index, array) => {
return array.indexOf(obj) === index;
});
console.log(uniqueArr);
一致しないインデックスが見つかったら、重複している要素としてフィルターされます