Percursos
/
JavaScript
JavaScript
/
Exercícios
/
Os encantamentos cíclicos de Elyse
Os encantamentos cíclicos de Elyse

Os encantamentos cíclicos de Elyse

Exercício de aprendizagem

Introdução

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.

O ciclo 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

O ciclo 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.

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

Instruções

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.

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

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.

Note

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

2. Determinar quantas cartas ímpares ou pares há

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

Note

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
Editar via GitHub A ligação abre numa nova janela ou separador
JavaScript Exercism

Estás pronto para começar Os encantamentos cíclicos de Elyse?

Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.