Heim  >  Artikel  >  Web-Frontend  >  Was ist der Unterschied zwischen es6-Set und Map?

Was ist der Unterschied zwischen es6-Set und Map?

青灯夜游
青灯夜游Original
2022-04-15 18:37:417866Durchsuche

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.

Was ist der Unterschied zwischen es6-Set und Map?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.

Kurze Beschreibung:

  • Die Hauptanwendungsszenarien von Set und Map sind Datenreorganisation und Datenspeicherung.
  • Set ist eine Datenstruktur, die als Set bezeichnet wird, und Map ist eine Datenstruktur, die als Wörterbuch bezeichnet wird.

Der Unterschied zwischen Mengen und Wörterbüchern:

  • Gemeinsamkeiten: Mengen und Wörterbücher können eindeutige Werte speichern
  • Unterschiede: Mengen speichern Elemente in der Form [Wert, Wert] und Wörterbücher speichern Elemente in der Form von [Schlüssel, Wert] Speicherung in Form von

Set:

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.

Wörterbuch (Karte):

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:

  • set(key, value): Neue Elemente zum Wörterbuch hinzufügen.
  • get(key): Finden Sie einen bestimmten Wert anhand des Schlüssels und geben Sie ihn zurück.
  • has(key): Bestimmen Sie, ob der Schlüsselschlüssel im Wörterbuch vorhanden ist.
  • delete(key): Entfernen Sie die entsprechenden Daten über die Schlüsseltaste aus dem Wörterbuch.
  • clear(): Alle Elemente in diesem Wörterbuch löschen.

Traversal-Methode:

  • Keys(): Gibt alle im Wörterbuch enthaltenen Schlüsselnamen in Form eines Iterators zurück.
  • values(): Gibt alle im Wörterbuch enthaltenen Werte in Form eines Iterators zurück.
  • entries(): Gibt einen Iterator aller Mitglieder zurück.
  • forEach(): Alle Mitglieder des Wörterbuchs durchlaufen.

Zusammenfassung**: **

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

  • Kann keinen bestimmten Wert nach Schlüssel finden

Karte:

  • bezieht sich auf die „Wörterbuch“-Struktur

  • [Schlüssel, Wert], der Schlüsselwert und der Schlüsselname sind inkonsistent

  • Karte kann verwendet werden, um () abzurufen, einen bestimmten Wert per Schlüssel zu finden und zurückzugeben

【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!

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