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

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 Language Specification
# sec-map.prototype-%symbol.iterator%

Compatibilidad con navegadores

BCD tables only load in the browser

Véase también