Artikel ini menyelidiki masalah biasa yang dihadapi apabila bekerja dengan tatasusunan objek: mengalih keluar masukan pendua. Matlamat kami adalah untuk memberikan pemahaman yang mendalam tentang kaedah terbaik untuk mencapai tugasan ini.
Pernyataan Masalah
Pertimbangkan objek berikut:
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"});
Matlamat kami adalah untuk mengalih keluar objek pendua daripada obj.arr supaya ia mengandungi hanya unik elemen.
ES6 Magic
Memanfaatkan kuasa ES6, kita boleh menggunakan penyelesaian satu pelapik:
obj.arr = obj.arr.filter((value, index, self) => index === self.findIndex((t) => ( t.place === value.place && t.name === value.name )) );
Generik Pendekatan
Untuk penyelesaian yang lebih serba boleh, pertimbangkan perkara berikut kod:
const uniqueArray = obj.arr.filter((value, index) => { const _value = JSON.stringify(value); return index === obj.arr.findIndex(obj => { return JSON.stringify(obj) === _value; }); });
Strategi Harta
Pendekatan alternatif ialah membandingkan sifat objek:
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)) );
Penjelasan
Penyelesaian yang disediakan menggunakan perkara berikut konsep:
Dengan menggunakan strategi ini, kami boleh mengalih keluar objek pendua daripada tatasusunan dengan berkesan, memastikan setiap elemen adalah unik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Objek Duplikat dengan Cekap daripada Array dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!