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.

El método [Symbol.iterator]() de las instancias Map implementa el protocolo de iteración y permite a los objetos Map ser consumidos por la mayoría de sintaxis que esperan iterables, como lo es, la sintaxis spread y el bucle for...of. Este método regresa un objeto iterator de map que produce tuplas llave-valor del map en orden de inserción.

El valor inicial de esta propiedad, es el mismo objeto de función que el valor inicial de la propiedad Map.prototype.entries.

Pruébalo

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

Sintaxis

js
map[Symbol.iterator]()

Parámetros

Ningúno.

Valor devuelto

El mismo valor devuelto que Map.prototype.entries(): un nuevo objeto iterator iterable que produce tuplas llave-valor del map.

Ejemplo

Iteración usando el bucle for...of

Note que raramente necesitará llamar este método directamente. La existencia de el método [Symbol.iterator]() hace a los objetos Map iterables, y sintaxis de iteracion como lo és el bucle for...of automáticamente llama a este método para obtener el iterador que se usará para iterar sobre el objeto.

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

Manualmente moviendo el iterador

Puedes llamar manualmente el método next() del objeto iterator para tener máximo control sobre el proceso de iteración.

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

Especificaciones

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

Compatibilidad con navegadores

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.

Véase también