Tally The Banana pt-br Explainer

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
    }
);