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.