Thanks to visit codestin.com
Credit goes to developer.mozilla.org

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Map.prototype[Symbol.iterator]()

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.

Die [Symbol.iterator]() Methode von Map Instanzen implementiert das iterable Protokoll und ermöglicht es Map Objekten, von den meisten Syntaxen verwendet zu werden, die Iterables erwarten, wie z.B. der Spread-Syntax und for...of Schleifen. Sie gibt ein Map-Iterator-Objekt zurück, das die Schlüssel-Wert-Paare der Map in Einfügereihenfolge liefert.

Der Anfangswert dieser Eigenschaft ist dasselbe Funktionsobjekt wie der Anfangswert der Map.prototype.entries Eigenschaft.

Probieren Sie es aus

const map = new Map();

map.set("0", "foo");
map.set(1, "bar");

const iterator = map[Symbol.iterator]();

for (const item of iterator) {
  console.log(item);
}
// Expected output: Array ["0", "foo"]
// Expected output: Array [1, "bar"]

Syntax

js
map[Symbol.iterator]()

Parameter

Keine.

Rückgabewert

Der gleiche Rückgabewert wie Map.prototype.entries(): ein neues iterables Iterator-Objekt, das die Schlüssel-Wert-Paare der Map liefert.

Beispiele

Iteration mit for...of Schleife

Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Das Vorhandensein der [Symbol.iterator]() Methode macht Map Objekte iterierbar, und iterierende Syntaxen wie die for...of Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, über den sie iterieren können.

js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

for (const entry of myMap) {
  console.log(entry);
}
// ["0", "foo"]
// [1, "bar"]
// [{}, "baz"]

for (const [key, value] of myMap) {
  console.log(`${key}: ${value}`);
}
// 0: foo
// 1: bar
// [Object]: baz

Manuelles Durchlaufen des Iterators

Sie können dennoch manuell die next() Methode des zurückgegebenen Iterator-Objekts aufrufen, um maximale Kontrolle über den Iterationsprozess zu erreichen.

js
const myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

const mapIter = myMap[Symbol.iterator]();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-map.prototype-%symbol.iterator%

Browser-Kompatibilität

Siehe auch