Explicação de Cálculo de bananas
Objetivo do desafio: Use o método de array .reduce()
para contar o número de bananas em uma array de frutas.
Passo a passo da solução: .reduce()
é usado para calcular um único valor a partir de uma array, por exemplo, somando todos os números de uma array em uma única soma.
.reduce()
usa 2 argumentos: uma função retorno de chamada e um valor inicial. O retorno de chamada também usa 2 parâmetros: o valor total até agora e o valor atual.
Por exemplo, no seguinte código:
[1, 2, 3].reduce((total, currentNumber) => {
return total + currentNumber;
}, 0)
// Isso retorna 6
Neste código, .reduce()
tem uma função retorno de chamada e 0
como valor inicial para o retorno de chamada. A função retorno de chamada faz a iteração pela array e adiciona cada elemento ao valor total.
Neste desafio, queremos que .reduce()
seja adicionado a total
somente se currentFruit === 'banana')
. Se isto for verdadeiro, total
será incrementado em 1
e depois total
é retornado. Se o currentFruit
não for 'banana'
, total
é retornado sem ser incrementado e .reduce()
passa para o próximo elemento.
Para concluir o desafio, adicione currentFruit === 'banana'
à if statement, depois adicione total++
ao bloco de código. Após a if statement, adicione return total
.
Solução do código de exemplo:
import { fruits } from 'grasshopper.belafonte';
for (let fruit of fruits) {
console.log(fruit);
}
let bananaCount = fruits.reduce((total, currentFruit) => {
if (currentFruit === 'banana') {
total++;
}
return total;
}, 0);
console.log(bananaCount);
Conceitos de JavaScript: .reduce()
, Arrays, Métodos de Array, If Statements, Declarações de Importação, Comandos de Retorno, Laço for of, console.log()
Código Adicional (código oculto executado antes do código do desafio):
const _fruits = [...Array(7)].map(() => pickRandom(['banana', 'banana', 'kiwi', 'mango', 'guava', 'orange', 'apple', 'banana']));
defineModule(
'grasshopper.belafonte',
{
fruits: _fruits
}
);