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:
letsum=0;for(letiof[1,2,3]){// Loop once for each of these valuessum+=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:
letchars=[..."abcd"];// chars == ["a", "b", "c", "d"]letdata=[1,2,3,4,5];Math.max(...data)// => 5
Los iteradores pueden utilizarse con la asignación de desestructuración:
letpurpleHaze=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:
letm=newMap([["one",1],["two",2]]);for(let[k,v]ofm)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", ...