Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Set/WeakSet-Kenntnisse in ECMAScript6_javascript

WBOY
Freigeben: 2016-05-16 15:55:28
Original
1192 Leute haben es durchsucht

ES6 fügt ein neues Datendestrukturierungsset hinzu, das wie das Set von Java keine doppelten Elemente speichert. Set wird als Klasse implementiert und muss vor der Verwendung neu sein.

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)
}
Nach dem Login kopieren

Verwenden Sie die Add-Methode von Set, um die oben genannten Elemente hinzuzufügen. Wiederholte Hinzufügungen werden nicht gespeichert.

Der Set-Konstruktor kann auch Arrays als Parameter akzeptieren

var s3 = new Set([1,2,3,1])
s3.size // 3
Nach dem Login kopieren

Sie können sehen, dass die wiederholte Nummer 1 immer noch nicht eingefügt ist. Um die Länge des Sets zu ermitteln, verwenden Sie außerdem die Größe und nicht die Länge.

Es ist zu beachten, dass es sich bei {} oder [] um zwei gleiche Objekte handelt

var s4 = new Set()
s4.add({})
s4.add({})
s4.size // 2

Nach dem Login kopieren

1. Traversensatz (für)

var s1 = new Set()
s1.add(1)
s1.add(2)
s1.add(3)
 
// 输出1,2, 3
for (var i of s1) {
  console.log(i)
}

Nach dem Login kopieren

2. Set in Array konvertieren

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)] 

Nach dem Login kopieren

3. Verwenden Sie Set, um Arrays zu deduplizieren

function distinct(arr) {
  return Array.from(new Set(arr))
// return [...new Set(arr)]
}
Nach dem Login kopieren

wie

Attribute der Menge

Konstrukteur
Größe
Methode festlegen

has(val) bestimmt, ob das Element existiert
add(val) fügt Element
hinzu delete(val) Element löschen
clear entfernt alle Elemente
Tasten
Werte
Einträge
forEach durchquert Elemente
Karte
Filter

4. WeakSet

WeakSet und Set speichern keine doppelten Elemente, es gibt jedoch einige Unterschiede

1. Nur Objekttypelemente speichern

ws = new WeakSet()
ws.add(1)
Nach dem Login kopieren

Der unter FF gemeldete Fehler lautet wie folgt

2. Es gibt nur drei Methoden zum Hinzufügen/Löschen/Löschen/Has, die nicht durchlaufen werden können, und es gibt kein Größenattribut usw.

ws = new WeakSet()
ws.size // undefined
ws.forEach // undefined
Nach dem Login kopieren

Erklärung von MDN

Die im WeakSet-Objekt gespeicherten Objektwerte werden schwach referenziert, wenn keine anderen Variablen oder Attribute auf den Objektwert verweisen. Aus diesem Grund kann das WeakSet-Objekt nicht aufgelistet werden. Es gibt keine Möglichkeit, alle darin enthaltenen Elemente abzurufen

WeakSet wird hauptsächlich zum Speichern von DOM-Knoten verwendet. Wenn diese Knoten aus dem Dokument entfernt werden, verursachen sie keine Speicherverluste.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!