Rumah > hujung hadapan web > tutorial js > Bagaimana Menyahduplikasi Tatasusunan Objek Berdasarkan Sifat Tertentu dengan Cekap?

Bagaimana Menyahduplikasi Tatasusunan Objek Berdasarkan Sifat Tertentu dengan Cekap?

Barbara Streisand
Lepaskan: 2025-01-01 04:16:11
asal
1030 orang telah melayarinya

How to Efficiently Deduplicate Arrays of Objects Based on Specific Properties?

Penyahduplikasian Tatasusunan Objek yang Cekap

Mengalih keluar objek pendua daripada tatasusunan boleh menjadi penting untuk integriti data dan pengoptimuman prestasi. Artikel ini meneroka kaedah berkesan untuk menghapuskan pendua daripada tatasusunan yang mengandungi objek.

Masalah:

Pertimbangkan objek dengan tatasusunan objek bersarang. Matlamatnya adalah untuk mengalih keluar objek pendua berdasarkan sifat "tempat" dan "nama" mereka.

obj = {};

obj.arr = new Array();

obj.arr.push({place: "here", name: "stuff"});
obj.arr.push({place: "there", name: "morestuff"});
obj.arr.push({place: "there", name: "morestuff"});
Salin selepas log masuk

Penyelesaian:

Kaedah 1: Penapisan ES6 dengan Array.filter dan Array.findIndex

obj.arr = obj.arr.filter((value, index, self) =>
  index === self.findIndex((t) =>
    t.place === value.place && t.name === value.name
  )
);
Salin selepas log masuk

Kaedah ini memanfaatkan Array.filter dan Array.findIndex untuk lelaran melalui tatasusunan dan mengenal pasti pendua. Ia hanya mengembalikan objek unik, mengekalkan kedua-dua sifat.

Kaedah 2: Penyelesaian Generik dengan JSON.stringify

const uniqueArray = obj.arr.filter((value, index) => {
  const _value = JSON.stringify(value);
  return index === obj.arr.findIndex((obj) => {
    return JSON.stringify(obj) === _value;
  });
});
Salin selepas log masuk

Pendekatan ini membandingkan perwakilan JSON objek dengan mengesan pendua. Ia merupakan penyelesaian generik yang boleh memuatkan objek dengan mana-mana struktur harta benda.

Kaedah 3: Menggunakan Perbandingan Kesaksamaan Harta Tersuai

const isPropValuesEqual = (subject, target, propNames) =>
  propNames.every((propName) => subject[propName] === target[propName]);

const getUniqueItemsByProperties = (items, propNames) =>
  items.filter((item, index, array) =>
    index === array.findIndex((foundItem) => isPropValuesEqual(foundItem, item, propNames))
  );
Salin selepas log masuk

Kaedah ini membolehkan perbandingan hartanah yang lebih disesuaikan . Ia menggunakan fungsi panggil balik untuk menentukan kesaksamaan harta dan mengembalikan set unik objek berdasarkan sifat yang ditentukan.

Penjelasan:

Kunci kepada penduaan ialah mencari pendua dan mengecualikan mereka daripada hasilnya. Fungsi findIndex membantu mengenal pasti tika pertama objek dengan sifat tertentu, manakala penapis mengalih keluar pendua yang berlaku selepas itu.

Atas ialah kandungan terperinci Bagaimana Menyahduplikasi Tatasusunan Objek Berdasarkan Sifat Tertentu dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan