Trilhas
/
JavaScript
JavaScript
/
Exercícios
/
Encantamentos de laços de Elyse
Encantamentos de laços de Elyse

Encantamentos de laços de Elyse

Exercício de aprendizagem

Introdução

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.

O laço 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

O laço 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.

O método 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.

Instruções

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.

1. Determine quantas cartas de um certo tipo há no baralho

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.

Note

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

2. Determine quantas cartas ímpares ou pares há

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).

Note

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
Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar Encantamentos de laços de Elyse?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.