Set ialah struktur data yang digunakan untuk menyimpan data yang dipesan dalam objek boleh lelar ini dialih keluar, jadi ia boleh digunakan untuk mengalih keluar elemen pendua dan menghalang "Array.from(new Set(arr))" atau "[...new Set(arr)]".
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Set
ialah struktur data baharu yang disediakan oleh ES6
Ia digunakan untuk menyimpan data tersusun seperti tatasusunan tiada keupayaan akses rawak, iaitu, anda tidak boleh mendapatkan elemen tertentu melalui pengindeksan seperti tatasusunan. Selain itu, perkara yang paling penting ialah elemen dalam Set
adalah unik dan elemen yang sama tidak dibenarkan disimpan!
Set
ialah pembina yang digunakan untuk membuat instantiate contoh:
let set = new Set() set.add(1)//往set集合中添加元素1
Jika tidak, Set()
boleh menerima objek lelaran sebagai parameter, sebagai data permulaan Instance, tetapi kandungan yang sama dalam objek boleh lelar ini akan dialih keluar Walau bagaimanapun, ini juga merupakan kaedah penyahduplikasian tatasusunan.
let set = new Set([1,2,2,1,4,3,5]) console.log(set)//Set(5) {1, 2, 4, 3, 5}
Keunikan elemen boleh digunakan untuk menghapuskan pendua dalam tatasusunan:
//方法一: Array.from(new Set(arr)) //arr是待去重的数组 //方法二: [...new Set(arr)]
Betapa hebatnya, menggunakan ciri ini juga boleh mencapai rentetan rentetan penyahduplikasian aksara.
[...new Set(str)].join('')
Walau bagaimanapun, semua perkara di atas dicapai melalui keunikan elemen jenis Set
, jadi bagaimanakah Set
secara dalaman menentukan sama ada sesuatu elemen itu unik? Ia menggunakan algoritma Same-value-zero equality
secara dalaman, yang kira-kira sama dengan pengendali kongruen, kecuali algoritma ini menganggap NaN
sama dengan NaN
.
Pada Set.prototype
, atribut <🎜 ditakrifkan > mewakili bilangan unsur. size
let set = new Set([1,2,2,1,4,3,5]) console.log(set.size)//5
Kaedah tika boleh dibahagikan kepada dua kategori: kaedah operasi dan kaedah traversal. Set
Set.prototype.add(value)
dan kembalikan Set
itu sendiri. Set
Set.prototype.delete(value)
Set.prototype.has(value)
. Set
Set.prototype.clear()
adalah add()
itu sendiri, jadi anda sepatutnya boleh memikirkan panggilan berantai: Set
let set = new Set() set.add(1).add(2).add(3)
Set.prototype.keys()
Set.prototype.values()
Set.prototype.entries()
Set.prototype.forEach()
tidak mempunyai nama kunci , hanya nilai kunci (atau Nama kunci dan nilai kunci adalah nilai yang sama), jadi kaedah Set
berkelakuan sama dengan kaedah keys
. values
WeakSet
ialah versi dinaik taraf WeakSet
, dengan dua perbezaan utama: Set
WeakSet
WeakSet
const ws = new WeakSet() ws.add(1)//报错,Invalid value used in weak set
semuanya adalah rujukan yang lemah. Ini bermakna mekanisme kutipan sampah tidak akan mempertimbangkan rujukan WeakSet
kepada objek Setelah kiraan rujukan luaran mencapai 0, ia akan menunggu untuk diproses oleh mekanisme kutipan sampah. Oleh itu, WeakSet
sesuai untuk menyimpan sementara sekumpulan objek. WeakSet
tidak sesuai untuk rujukan, kerana ia mungkin akan dibersihkan pada bila-bila masa, namun, WeakSet
menetapkan bahawa ia tidak boleh dilalui. Kaedah dalam ES6
pada asasnya sama dengan WeakSet
yang dinyatakan di atas, tetapi ia tidak mempunyai atribut Set
dan tiada kaedah traverser. size
tutorial video javascript, Video pengaturcaraan]
Atas ialah kandungan terperinci Apakah kegunaan set es6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!