Posted at

ES6 オブジェクトの配列を特定のキーでユニークにする

More than 1 year has passed since last update.

オブジェクトの配列内で同じ値を持つオブジェクトのユニーク配列を作成する.

同じオブジェクトであることの判定は、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",
// }
// ]