Cuando trabajas con arrays, a veces quieres ejecutar código para cada valor del array. A esto se le llama iterar o recorrer el array.
Aquí veremos el caso en el que no quieres modificar el array durante el proceso. Para transformar arrays, consulta el concepto Transformaciones de arrays.
for
La forma más básica de iterar sobre un array es usar un bucle for; consulta el concepto Bucles for.
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of
Cuando quieres trabajar directamente con el valor en cada iteración y no necesitas el índice para nada, puedes usar un bucle for...of.
for...of funciona como el bucle for básico que mostramos arriba, pero en lugar de tener que lidiar con el índice como una variable del bucle, se te da el valor directamente.
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
Igual que en los bucles for normales, puedes usar continue para detener la iteración actual y break para detener por completo la ejecución del bucle.
forEach
Todos los arrays incluyen un método forEach que se puede usar para recorrer los elementos del array.
forEach acepta un callback como parámetro.
La función callback se llama una vez por cada elemento del array.
El elemento actual, su índice y el array completo se pasan al callback como argumentos.
A menudo solo se usan el elemento actual o el índice.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
No hay forma de detener la iteración una vez que el bucle forEach ha comenzado.
Las sentencias break y continue no existen en este contexto.
Como una maga en ciernes, Elyse necesita analizar su baraja de muchas maneras distintas. Para simplificar, solo usa cartas con valores del 1 al 10.
Elyse quiere saber cuántas cartas de un tipo en particular tiene en su baraja.
Escribe una función cardTypeCheck que tome dos parámetros: un array de cartas (la baraja de Elyse) y el tipo de carta que se va a contar.
La función debe usar forEach y devolver el número de cartas del tipo especificado que hay en la baraja.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Para otro truco, Elyse necesita saber cuántas cartas impares o pares hay en su baraja.
Implementa una función determineOddEvenCards que reciba dos parámetros: un array de cartas (la baraja de Elyse) y un Boolean (true equivale a «par» y false equivale a «impar»).
Esta función debe devolver un solo número: la cantidad de cartas impares o pares que hay en la baraja (según el valor del segundo argumento).
Para practicar, esta vez usa un bucle for...of en la implementación de la función.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.