Capítulo 12. Iteradores e geradores
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
Iteráveis objetos e seus iteradores associados são uma caraterística do ES6 que vimos várias vezes ao longo deste livro. Arrays (incluindo TypedArrays) são iteráveis, assim como strings e objetos Set e Map. Isto significa que o conteúdo destas estruturas de dados pode ser iterado - percorrido em loop - com o ciclo for/of, como vimos em §5.4.4:
letsum=0;for(letiof[1,2,3]){// Loop once for each of these valuessum+=i;}sum// => 6
Iteradores também pode ser utilizado com o operador ... para expandir ou "espalhar" um objeto iterável num inicializador de array ou numa invocação de função, como vimos em §7.1.2:
letchars=[..."abcd"];// chars == ["a", "b", "c", "d"]letdata=[1,2,3,4,5];Math.max(...data)// => 5
Os iteradores podem ser utilizados com atribuição de desestruturação:
letpurpleHaze=Uint8Array.of(255,0,255,128);let[r,g,b,a]=purpleHaze;// a == 128
Quando iteras um objeto Map, os valores de retorno são pares [key, value], que funcionam bem com a atribuição de desestruturação num ciclo for/of:
letm=newMap([["one",1],["two",2]]);for(let[k,v]ofm)console.log(k,v);// Logs 'one 1' and 'two 2'
Se quiseres iterar apenas as chaves ou apenas os valores em vez dos pares, podes utilizar os métodos keys() e values():
[...m]// => [["one", 1], ["two", 2]]: default iteration[...m.entries ...