Map.prototype[Symbol.iterator]()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die Methode [Symbol.iterator]() von Map-Instanzen implementiert das iterable Protokoll und erlaubt es, Map-Objekte mit den meisten Syntaxen zu verwenden, die Iterables erwarten, wie z. B. die 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 hervorbringt.

Der anfängliche Wert dieser Eigenschaft ist dasselbe Funktionsobjekt wie der anfängliche Wert der Map.prototype.entries-Eigenschaft.

Probieren Sie es aus

const map1 = new Map();

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

const iterator1 = map1[Symbol.iterator]();

for (const item of iterator1) {
  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 iterierbares Iterator-Objekt, das die Schlüssel-Wert-Paare der Map liefert.

Beispiele

Iteration mit einer for...of-Schleife

Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Die Existenz der [Symbol.iterator]()-Methode macht Map-Objekte iterierbar, und Iterations-Syntaxen wie die for...of-Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, der übergangen werden soll.

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 Iterieren mit einem eigenen Iterator

Es ist dennoch möglich, die next()-Methode des zurückgegebenen Iterator-Objekts manuell aufzurufen, um maximale Kontrolle über den Iterationsprozess zu erlangen.

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

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

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.iterator]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Uses a non-standard name.
Has more compatibility info.

Siehe auch