From da26fd850a68182cfac5f9edc85dc5ab880a82c9 Mon Sep 17 00:00:00 2001 From: seeker Date: Mon, 26 Aug 2024 12:10:05 -0400 Subject: [PATCH] [es] Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator (#23235) [es] translate map symbol.iterator --- .../map/symbol.iterator/index.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 files/es/web/javascript/reference/global_objects/map/symbol.iterator/index.md diff --git a/files/es/web/javascript/reference/global_objects/map/symbol.iterator/index.md b/files/es/web/javascript/reference/global_objects/map/symbol.iterator/index.md new file mode 100644 index 00000000000000..5da76caa464a4c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/map/symbol.iterator/index.md @@ -0,0 +1,89 @@ +--- +title: Map.prototype[Symbol.iterator]() +slug: Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator +l10n: + sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca +--- + +{{JSRef}} + +El método **`[Symbol.iterator]()`** de las instancias {{jsxref("Map")}} implementa el [protocolo de iteración](/es/docs/Web/JavaScript/Reference/Iteration_protocols) y permite a los objetos `Map` ser consumidos por la mayoría de sintaxis que esperan iterables, como lo es, la [sintaxis spread](/es/docs/Web/JavaScript/Reference/Operators/Spread_syntax) y el bucle {{jsxref("Statements/for...of", "for...of")}}. Este método regresa un [objeto iterator de map](/es/docs/Web/JavaScript/Reference/Global_Objects/Iterator) 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 {{jsxref("Map.prototype.entries")}}. + +{{EmbedInteractiveExample("pages/js/map-prototype-@@iterator.html")}} + +## Sintaxis + +```js-nolint +map[Symbol.iterator]() +``` + +### Parámetros + +Ningúno. + +### Valor devuelto + +El mismo valor devuelto que {{jsxref("Map.prototype.entries()")}}: un nuevo [objeto iterator iterable](/es/docs/Web/JavaScript/Reference/Global_Objects/Iterator) 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](/es/docs/Web/JavaScript/Reference/Iteration_protocols#el_protocolo_iterable), 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 + +{{Specifications}} + +## Compatibilidad con navegadores + +{{Compat}} + +## Véase también + +- {{jsxref("Map")}} +- {{jsxref("Map.prototype.entries()")}} +- {{jsxref("Map.prototype.keys()")}} +- {{jsxref("Map.prototype.values()")}} +- {{jsxref("Symbol.iterator")}} +- [Protocolos de Iteración](/es/docs/Web/JavaScript/Reference/Iteration_protocols)