Remove Duplicate Object By Key From Array Javascript

Remove Duplicate Object By Key From Array Javascript

4 min read Jun 20, 2024
Remove Duplicate Object By Key From Array Javascript

Cara Menghapus Objek Duplikat Berdasarkan Kunci di Array JavaScript

Seringkali, kita membutuhkan untuk menghapus objek duplikat dari sebuah array JavaScript berdasarkan kunci tertentu. Misalnya, kita memiliki array objek "produk" dengan kunci "id", dan kita ingin menghapus duplikat berdasarkan "id" tersebut.

Berikut adalah beberapa cara untuk menghapus objek duplikat berdasarkan kunci di array JavaScript:

1. Menggunakan Set dan map()

Metode ini memanfaatkan kemampuan Set untuk menyimpan nilai unik.

  1. Kita dapat menggunakan map() untuk mengambil nilai kunci yang ingin dihapus duplikatnya dari setiap objek dalam array.
  2. Selanjutnya, kita dapat membuat Set baru yang berisi semua nilai kunci yang unik.
  3. Akhirnya, kita dapat menggunakan filter() untuk memfilter array asli dan hanya menyimpan objek yang memiliki kunci unik.

Berikut adalah contohnya:

const products = [
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 1, name: 'Produk C' },
  { id: 3, name: 'Produk D' },
];

const uniqueIds = new Set(products.map(product => product.id));
const uniqueProducts = products.filter(product => uniqueIds.has(product.id));

console.log(uniqueProducts);

Output:

[
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 3, name: 'Produk D' }
]

2. Menggunakan reduce()

Metode ini menggunakan reduce() untuk membuat objek baru yang menyimpan semua objek unik berdasarkan kunci yang ditentukan.

  1. Kita dapat menggunakan reduce() untuk iterasi melalui array dan menambahkan objek unik ke objek baru.
  2. Jika objek dengan kunci yang sama sudah ada di objek baru, maka kita akan mengabaikannya.
  3. Terakhir, kita dapat menggunakan Object.values() untuk mengambil nilai objek baru, yang merupakan array dari objek unik.

Berikut adalah contohnya:

const products = [
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 1, name: 'Produk C' },
  { id: 3, name: 'Produk D' },
];

const uniqueProducts = products.reduce((acc, product) => {
  if (!acc[product.id]) {
    acc[product.id] = product;
  }
  return acc;
}, {});

console.log(Object.values(uniqueProducts));

Output:

[
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 3, name: 'Produk D' }
]

3. Menggunakan Library Eksternal

Ada beberapa library eksternal yang dapat membantu kita menghapus duplikat berdasarkan kunci, seperti lodash.

const _ = require('lodash');

const products = [
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 1, name: 'Produk C' },
  { id: 3, name: 'Produk D' },
];

const uniqueProducts = _.uniqBy(products, 'id');

console.log(uniqueProducts);

Output:

[
  { id: 1, name: 'Produk A' },
  { id: 2, name: 'Produk B' },
  { id: 3, name: 'Produk D' }
]

Kesimpulan

Ada beberapa cara untuk menghapus objek duplikat berdasarkan kunci di array JavaScript. Pilih metode yang paling sesuai dengan kebutuhan Anda. Jika Anda membutuhkan solusi yang lebih efisien, library eksternal seperti lodash dapat membantu.