Bagaimanakah Saya Boleh Mencapai Perbandingan Kesaksamaan Mendalam untuk Elemen dalam Objek Set JavaScript?

Barbara Streisand
Lepaskan: 2024-11-12 05:28:02
asal
356 orang telah melayarinya

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

Menyesuaikan Kesamaan untuk Objek Set JavaScript

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.

Gelagat Tidak Diinginkan untuk Kesamaan Objek:

Pertimbangkan coretan kod berikut:

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
Salin selepas log masuk

Seboleh-bolehnya lihat, walaupun kedua-dua objek mempunyai sifat dan nilai yang sama, ia dianggap berbeza kerana rujukan kesamaan.

Perbandingan Tersuai untuk Objek Set:

Malangnya, objek Set ES6 tidak menyediakan kaedah terbina dalam untuk menyesuaikan perbandingan kesamaan. Memanjangkannya untuk mengatasi logik perbandingan juga akan menjadi mencabar.

Penyelesaian Potensi:

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!

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