Quando trabalhas com arrays, por vezes queres executar código para cada valor do array. A isto chama-se iterar ou percorrer o array.
Aqui vamos ver o caso em que não queres modificar o array durante o processo. Para transformar arrays, consulta antes o conceito Transformações de arrays.
for
A forma mais básica de iterar sobre um array é usar um ciclo for, consulta o conceito Ciclos 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
Quando queres trabalhar diretamente com o valor em cada iteração e não precisas do índice de todo, podes usar um ciclo for...of.
O for...of funciona como o ciclo for básico mostrado acima, mas em vez de teres de lidar com o índice como variável do ciclo, recebes o valor diretamente.
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
Tal como nos ciclos for normais, podes usar continue para interromper a iteração atual e break para parar completamente a execução do ciclo.
forEach
Todos os arrays incluem um método forEach que podes usar para percorrer os elementos do array.
O forEach aceita um callback como parâmetro.
A função de callback é chamada uma vez por cada elemento do array.
O elemento atual, o seu índice e o array completo são passados ao callback como argumentos.
Muitas vezes, só se usa o elemento atual ou o índice.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Não há forma de parar a iteração depois de o ciclo forEach começar.
As instruções break e continue não existem neste contexto.
Como aprendiz de maga, a Elyse precisa de analisar o seu baralho de várias formas diferentes. Para simplificar, só usa cartas com valores de 1 a 10.
A Elyse quer saber quantas cartas de um determinado tipo tem no seu baralho.
Escreve uma função cardTypeCheck que recebe dois parâmetros: um array de cartas (o baralho da Elyse) e o tipo de carta a contar.
A função deve usar forEach e devolver o número de cartas do tipo indicado que existem no baralho.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Para outro truque, a Elyse precisa de saber quantas cartas ímpares ou pares há no seu baralho.
Implementa uma função determineOddEvenCards que recebe dois parâmetros: um array de cartas (o baralho da Elyse) e um boolean (true corresponde a «par» e false corresponde a «ímpar»).
Esta função deve devolver um único número: o número de cartas ímpares ou pares que há no baralho (consoante o valor do segundo argumento).
Para praticar, usa desta vez um ciclo for...of na implementação da função.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.