Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang Set/WeakSet dalam kemahiran ECMAScript6_javascript
ES6 menambah Set pemusnah data baharu, yang, seperti Set Java, tidak menyimpan elemen pendua. Set dilaksanakan sebagai kelas dan perlu baharu sebelum digunakan.
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) s1.add(1) var s2 = new Set() s2.add('a') s2.add('a') // 输出1,2, 3 for (var i of s1 ) { console.log(i) } // 输出a for (var i of s2 ) { console.log(i) }
Gunakan kaedah tambah Set untuk menambah elemen di atas tidak akan disimpan.
Pembina Set juga boleh menerima tatasusunan sebagai parameter
var s3 = new Set([1,2,3,1]) s3.size // 3
Anda boleh lihat nombor 1 yang diulang masih tidak dimasukkan. Selain itu, untuk mendapatkan panjang Set, gunakan saiz, bukan panjang.
Perlu diambil perhatian bahawa untuk {} atau [], ia adalah dua objek yang sama
var s4 = new Set() s4.add({}) s4.add({}) s4.size // 2
1. Set Traverse (untuk)
var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) // 输出1,2, 3 for (var i of s1) { console.log(i) }
2. Tukar Set kepada tatasusunan
var s1 = new Set() s1.add(1) s1.add(2) // toArray var a1 = Array.from(s1) Array.isArray(a1) // true // or var a1 = [...new Set(s1)]
3. Gunakan Set untuk menyahduplikasi tatasusunan
function distinct(arr) { return Array.from(new Set(arr)) // return [...new Set(arr)] }
sebagai
Atribut Set
pembina
saiz
Tetapkan kaedah
has(val) menentukan sama ada unsur itu wujud
add(val) menambah elemen
delete(val) padam elemen
clear membuang semua elemen
kunci
nilai
penyertaan
untukSetiap merentasi elemen
peta
penapis
4. Set Lemah
WeakSet dan Set tidak menyimpan elemen pendua, tetapi terdapat beberapa perbezaan
1. Hanya simpan elemen jenis objek
ws = new WeakSet() ws.add(1)
Ralat yang dilaporkan di bawah FF adalah seperti berikut
2. Terdapat hanya tiga kaedah tambah/padam/kosongkan/telah, yang tidak boleh dilalui, dan tiada atribut saiz, dsb.
ws = new WeakSet() ws.size // undefined ws.forEach // undefined
Penjelasan MDN
Nilai objek yang disimpan dalam objek WeakSet dirujuk dengan lemah Jika tiada pembolehubah atau atribut lain merujuk kepada nilai objek, nilai objek akan dikumpul Oleh sebab ini, objek WeakSet tidak boleh dikira. tiada cara untuk mendapatkan semua elemen yang terkandung di dalamnya
WeakSet digunakan terutamanya untuk menyimpan nod DOM Apabila nod ini dialih keluar daripada dokumen, ia tidak akan menyebabkan kebocoran memori.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.