やりたいこと
以下のように、中身の値( id や key など要素を一意に決めるものを想定しています)が重複しているオブジェクトがあった時、重複している部分だけ削除したオブジェクトを作りたい。
id
の aa
が重複しているので、
sample.js
const objectA = [ {id: aa, value: "banana”},
{id: bb, value: "apple"},
{id: cc, value: "orange"},
{id: aa, value: "banana"},
{id: dd, value: "grape"} ];
こうしたい
sample.js
const objectA = [ {id: aa, value: "banana”},
{id: bb, value: "apple"},
{id: cc, value: "orange"},
{id: dd, value: "grape"} ];
やりかた
以下のように、filter
とfindIndex
を用いてフィルタリングすることで、重複した値を持つ要素を削除したオブジェクトを作ることができます。item.id
のid
の部分は調べたいプロパティ名に適宜変えてやってみてください。
sample.js
const filteredObjectA = objectA.filter(
(item, index, array) => {
return (
array.findIndex(nextItem => item.id === nextItem.id) ===
index
);
}
);