オブジェクトの配列内で同じ値を持つオブジェクトのユニーク配列を作成する.
同じオブジェクトであることの判定は、findIndex
でおこない、条件合致したはじめのオブジェクトがユニーク後に残される.
let arr = [
{ name: "Newton", age: 84, role: "Physicist" },
{ name: "Newton", age: 84, role: "Mathematician" },
{ name: "Newton", age: 84, role: "Economist" },
{ name: "Mozart", age: 35, role: "Musician" },
{ name: "Darwin", age: 73, role: "Biologist" },
{ name: "Newton", age: 84, role: "Alchemist" },
{ name: "Mozart", age: 35, role: "Composer" },
]
let uniqArr = arr.filter((obj, index, self)=>{
let firstIndex = self.findIndex((x)=>{ return obj.name === x.name })
return firstIndex === index
})
console.log(uniqArr)
// [
// {
// age: 84,
// name: "Newton",
// role: "Physicist",
// },
// {
// age: 35,
// name: "Mozart",
// role: "Musician",
// },
// {
// age: 73,
// name: "Darwin",
// role: "Biologist",
// }
// ]