Capítulo 12. Iteradores y generadores

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Los objetos iterables y sus iteradores asociados son una característica de ES6 que hemos visto varias veces a lo largo de este libro. Las matrices (incluidas las TypedArrays) son iterables, al igual que las cadenas y los objetos Set y Map. Esto significa que el contenido de estas estructuras de datos puede iterarse -repasarse en bucle- con el bucle for/of, como vimos en §5.4.4:

let sum = 0;
for(let i of [1,2,3]) { // Loop once for each of these values
    sum += i;
}
sum   // => 6

Iteradores también se puede utilizar con el operador ... para expandir o "extender" un objeto iterable en un inicializador de matriz o en una invocación de función, como vimos en §7.1.2:

let chars = [..."abcd"]; // chars == ["a", "b", "c", "d"]
let data = [1, 2, 3, 4, 5];
Math.max(...data)        // => 5

Los iteradores pueden utilizarse con la asignación de desestructuración:

let purpleHaze = Uint8Array.of(255, 0, 255, 128);
let [r, g, b, a] = purpleHaze; // a == 128

Cuando iteras un objeto Mapa, los valores devueltos son pares [key, value], que funcionan bien con la asignación de desestructuración en un bucle for/of:

let m = new Map([["one", 1], ["two", 2]]);
for(let [k,v] of m) console.log(k, v); // Logs 'one 1' and 'two 2'

Si quieres iterar sólo las claves o sólo los valores en lugar de los pares, puedes utilizar los métodos keys() y values():

[...m]            // => [["one", ...

Get JavaScript: La Guía Definitiva, 7ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.