Heim > Artikel > Web-Frontend > Was ist der Unterschied zwischen es6-Set und Map?
Unterschied: 1. Set bezieht sich auf die „Set“-Struktur, während sich Map auf die „Dictionary“-Struktur bezieht. 2. Set speichert Elemente in der Form „[Wert, Wert]“, während Map Elemente in der Form speichert „[Schlüssel, Wert]“; 3. Map kann get() verwenden, um einen bestimmten Wert anhand des Schlüssels zu finden und zurückzugeben, set jedoch nicht.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
Kurze Beschreibung:
Der Unterschied zwischen Mengen und Wörterbüchern:
ES6 fügt eine neue Datenstruktur hinzu, die einem Array ähnelt, aber die Mitglieder sind eindeutig und ungeordnet und es gibt keine doppelten Werte.
Set selbst ist ein Konstruktor, der zum Generieren einer Set-Datenstruktur verwendet wird.
Mit Set-Objekten können Sie eindeutige Werte jeglicher Art speichern, unabhängig davon, ob es sich um Grundwerte oder Objektreferenzen handelt.
const s = new Set() [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)) for (let i of s) { console.log(i) // 1 2 3 4 } // 去重数组的重复对象 let arr = [1, 2, 3, 2, 1, 1] [... new Set(arr)] // [1, 2, 3]
Hinweis: Beim Hinzufügen von Werten zu Set erfolgt keine Typkonvertierung, daher sind „5“ und „5“ zwei verschiedene Werte. Intern wird festgelegt, ob zwei Werte unterschiedlich sind. Der verwendete Algorithmus heißt „Same-Value-Zero-Gleichheit“ und ähnelt dem **exakten Gleichheitsoperator („===“). *`NaN` ist gleich sich selbst, während der exakte Gleichheitsoperator davon ausgeht, dass `NaN` nicht gleich sich selbst ist. **
let set = new Set(); let a = NaN; let b = NaN; set.add(a); set.add(b); set // Set {NaN} let set1 = new Set() set1.add(5) set1.add('5') console.log([...set1]) // [5, "5"]
Operationsmethode:
add(value): Neu, äquivalent zum Push-in-Array.
delete(value): Löschen Sie den Wert in der Sammlung, falls vorhanden.
has(value): Bestimmen Sie, ob ein Wert in der Menge vorhanden ist.
clear(): Löscht die Sammlung.
Traversal-Methode: Traversal-Methode (Traversal-Reihenfolge ist Einfügungsreihenfolge)
keys(): Gibt einen Iterator zurück, der alle Schlüssel in der Sammlung enthält.
values(): Gibt einen Iterator zurück, der alle Werte in der Sammlung enthält.
entries(): Gibt einen Schlüsselwert-Iterator zurück, der alle Elemente im Set-Objekt enthält.
forEach(callbackFn, thisArg): Wird zum Ausführen von CallbackFn-Operationen für Sammlungsmitglieder verwendet. Wenn der thisArg-Parameter bereitgestellt wird, ist dies im Callback dieser Parameter. Es gibt keinen Rückgabewert.
ist eine Struktur aus Schlüssel-Wert-Paaren mit extrem schneller Suchgeschwindigkeit.
const m = new Map() const o = {p: 'haha'} m.set(o, 'content') m.get(o) // content m.has(o) // true m.delete(o) // true m.has(o) // false
So funktioniert es:
Traversal-Methode:
Set:
bezieht sich auf die „Set“-Struktur
[Wert, Wert], der Schlüsselwert und der Schlüsselname sind konsistent (oder nur der Schlüsselwert, kein Schlüsselname).
Karte:
bezieht sich auf die „Wörterbuch“-Struktur
[Schlüssel, Wert], der Schlüsselwert und der Schlüsselname sind inkonsistent
【Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend】
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen es6-Set und Map?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!