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"});
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 ) );
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; }); });
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)) );
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!