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