Ao trabalhar com arrays, às vezes você quer executar um código para cada valor do array. Isso se chama iterar sobre o array, ou fazer um laço sobre ele.
Aqui vamos ver o caso em que você não quer modificar o array no processo. Para transformar arrays, veja o conceito Transformações de Array.
for
A forma mais básica de iterar sobre um array é usar um laço for, veja o conceito Laços 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 você quer trabalhar com o valor diretamente em cada iteração e não precisa do índice, pode usar um laço for...of.
O for...of funciona como o laço for básico mostrado acima, mas em vez de você ter que lidar com o índice como uma variável no laço, o valor é fornecido 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
Assim como nos laços for comuns, você pode usar continue para interromper a iteração atual e break para encerrar a execução do laço por completo.
forEach
Todo array inclui um método forEach que pode ser usado para iterar sobre os elementos do array.
O forEach aceita um callback como parâmetro.
A função de callback é chamada uma vez para cada elemento do array.
O elemento atual, o índice dele e o array completo são passados ao callback como argumentos.
Muitas vezes, só o elemento atual ou o índice são usados.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Não há como interromper a iteração depois que o laço forEach começou.
As instruções break e continue não existem nesse contexto.
Como uma mágica iniciante, Elyse precisa analisar o baralho dela de várias maneiras diferentes. Para simplificar, ela só usa cartas com valores de 1 a 10.
Elyse quer saber quantas cartas de um determinado tipo ela tem no baralho.
Escreva 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 retornar o número de cartas do tipo especificado no baralho.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Para outro truque, Elyse precisa saber quantas cartas ímpares ou pares há no baralho dela.
Implemente uma função determineOddEvenCards que recebe dois parâmetros: um array de cartas (o baralho da Elyse) e um boolean (true é análogo a "par", e false é análogo a "ímpar").
Essa função deve retornar um único número: a quantidade de cartas ímpares ou pares que há no baralho (dependendo do valor do segundo argumento).
Para praticar, desta vez use um laço 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
Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.