Tally The Banana es-419 Explainer

Explicación de Cuenta los plátanos

Objetivo de este acertijo: Usar el método de arreglo .reduce() para contar la cantidad de plátanos en un arreglo de frutas.

Tutorial de la solución:
.reduce() se usa para calcular un valor único de un arreglo, por ejemplo, agregar todos los números de un arreglo en una suma única.

.reduce() usa 2 argumentos: una función de devolución de llamada y un valor de inicio. La devolución de llamada también usa 2 parámetros: el valor total hasta el momento, y el valor actual.

Por ejemplo, en el siguiente código:

[1, 2, 3].reduce((total, currentNumber) => {
  return total + currentNumber;
}, 0)
// Esto devuelve 6

En este código, .reduce() tiene una función de devolución de llamada y 0 como un valor de inicio para la devolución de llamada. La función de devolución de llamada itera por el arreglo, y agrega cada elemento al valor total.

En este acertijo, queremos que .reduce() solo agregue a total si currentFruit === 'banana'). Si esto es verdadero, total se incrementará en 1, y luego se devuelve total. Si currentFruit no es 'banana', total se devuelve sin que se incremente, y .reduce() se mueve al siguiente elemento.

Para completar el acertijo, agrega la prueba currentFruit === 'banana' a la if statement, luego agrega total++ al bloque de código. Después de la if statement, agrega return total.

Solución del código de ejemplo:

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

Conceptos de JavaScript: .reduce(), arreglos, métodos de arreglo, if statements, declaraciones de importación, declaraciones return, for of loops, console.log()
Código adicional (código oculto que se ejecuta antes del código del acertijo):

const _fruits = [...Array(7)].map(() => pickRandom(['banana', 'banana', 'kiwi', 'mango', 'guava', 'orange', 'apple', 'banana']));

defineModule(
    'grasshopper.belafonte',
    {
        fruits: _fruits
    }
);