Dalam ES6 (Harmony), objek Set baharu memperkenalkan kesamaan rujukan untuk elemennya. Walau bagaimanapun, tingkah laku ini mungkin tidak selalunya sesuai untuk membandingkan objek secara mendalam.
Pertimbangkan coretan kod berikut:
var set = new Set(); set.add({a:1}); set.add({a:1}); console.log([...set.values()]); // Array [ Object, Object ]
Seboleh-bolehnya lihat, walaupun kedua-dua objek mempunyai sifat dan nilai yang sama, ia dianggap berbeza kerana rujukan kesamaan.
Malangnya, objek Set ES6 tidak menyediakan kaedah terbina dalam untuk menyesuaikan perbandingan kesamaan. Memanjangkannya untuk mengatasi logik perbandingan juga akan menjadi mencabar.
Walaupun perbandingan tersuai untuk objek Set tidak disokong secara langsung, anda boleh mempertimbangkan untuk menggunakan struktur atau teknik data alternatif:
1. Objek Nilai Kekal:
Artikel yang disebut dalam respons mencadangkan menggunakan objek nilai tidak berubah, yang membolehkan Set menggunakan perbandingan nilai dalam. Walau bagaimanapun, ini bukan standard dalam JavaScript pada masa ini.
2. Struktur Data Tersuai dengan Perbandingan Mendalam:
Anda boleh membuat struktur data tersuai anda sendiri yang mewarisi daripada Set dan mengatasi kaedah yang menggunakan identiti objek. Walau bagaimanapun, ini memerlukan penulisan semula lengkap pelaksanaan Set, yang tidak akan cekap untuk set besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Perbandingan Kesaksamaan Mendalam untuk Elemen dalam Objek Set JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!