Avanzadojavascript
Iteradores y Generadores
Comprende el protocolo iterable de JavaScript y como crear generadores con function*.
El protocolo iterable
Un objeto es iterable si implementa el metodo
[Symbol.iterator](). Arrays, Strings, Maps y Sets son iterables nativamente. El bucle for...of funciona sobre cualquier iterable.javascript
1const texto = "Hola";
2for (const letra of texto) {
3 console.log(letra); // H, o, l, a
4}
5
6const mapa = new Map([["a", 1], ["b", 2]]);
7for (const [clave, valor] of mapa) {
8 console.log(`${clave}: ${valor}`);
9}Generadores (function*)
Los generadores son funciones que pueden pausar su ejecucion con
yield y reanudarla despues. Retornan un iterador.javascript
1function* fibonacci() {
2 let a = 0, b = 1;
3 while (true) {
4 yield a;
5 [a, b] = [b, a + b];
6 }
7}
8
9const fib = fibonacci();
10console.log(fib.next().value); // 0
11console.log(fib.next().value); // 1
12console.log(fib.next().value); // 1
13console.log(fib.next().value); // 2
14console.log(fib.next().value); // 3Prueba lo aprendido
Escribe código JavaScript y ejecútalo directamente en el navegador.
Editor de Códigojavascript
1const texto = "Hola";
2for (const letra of texto) {
3 console.log(letra); // H, o, l, a
4}
5
6const mapa = new Map([["a", 1], ["b", 2]]);
7for (const [clave, valor] of mapa) {
8 console.log(`${clave}: ${valor}`);
9}