制作ブログ Web制作マークアップJavaScript配列内のオブジェクトの値が重複する場合は削除する

配列内のオブジェクトの値が重複する場合は削除する

たとえば、下記のような配列があって。

const array = [{
  id: 1,
  name: 'test1'
}, {
  id: 2,
  name: 'test2'
}, {
  id: 1,
  name: 'test1-2'
}, {
  id: 3,
  name: 'test3'
}, {
  id: 2,
  name: 'test2-2'
}, {
  id: 4,
  name: 'test4'
}, {
  id: 1,
  name: 'test1-3'
}]

idが重複した場合は、最初にidのみ残して、それ以外は削除したいとき。

const array_unique = Object.values(
  array.reduce((acc, obj) => {
    if (!acc[obj.id]) {
      acc[obj.id] = obj;
    }
    return acc;
  }, {})
)

これで、array_unique は下記のようになる。

array_unique = [{
  id: 1,
  name: 'test1'
}, {
  id: 2,
  name: 'test2'
}, {
  id: 3,
  name: 'test3'
}, {
  id: 4,
  name: 'test4'
}]