Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Set/WeakSet-Kenntnisse in ECMAScript6_javascript

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

WBOY
WBOYOriginal
2016-05-16 15:55:281192Durchsuche

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

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

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

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

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

3. Verwenden Sie Set, um Arrays zu deduplizieren

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

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)

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

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.

Stellungnahme:
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