All For One pt-br Explainer

Explicação de Todos por um

Objetivo deste desafio: Complete a função de seta em .reduce() para que o totalCost possa ser calculado.

Passo a passo da solução: Quando o código inicial é executado, o totalCost tem o valor undefined. Deve ser um número, a soma de todos os valores em prices. A forma como totalCost está sendo calculado é: pegue a array prices e .reduce() (reduza-a).

.reduce() é similar a .map(), exceto que não retorna uma array de todos os resultados. Usa outro parâmetro chamado “acumulador” que tem seu valor atualizado por cada item. Neste desafio, atualizar o acumulador significa apenas adicionar o item atual a ele. O valor final do acumulador será o valor retornado pela chamada .reduce().

.reduce() usa uma função retorno de chamada como argumento. Estamos usando uma função de seta como retorno de chamada. Deve ter 2 parâmetros: uma variável (o acumulador) que armazenará a soma à medida que for sendo somada e uma variável para armazenar o item atual. O acumulador em nossa função de seta é chamado sum e nosso preço atual será armazenado no parâmetro price.

O bloco de código {} da função de seta deve adicionar o price atual a sum acumulada e esta deve ser retornada. Assim, return sum + price, é o comando.

Solução do código de exemplo:
(Toque abaixo para revelar)

import { hours, prices } from 'grasshopper.store';

console.log(hours);
let totalHours = hours.reduce((today, sum) => {
  return today + sum;
});
console.log('Total Hours: ' + totalHours);

console.log(prices);
let totalCost = prices.reduce((price, sum) => {
  return price + sum;
});
console.log('Total Cost: ' + totalCost);

Conceitos de JavaScript: Bloco de código (função de seta), console.log(), .reduce()
Código Adicional (código oculto executado antes do código do desafio):

let groceries = [
    {name: 'Grasshopper Gumdrops', price: 4},
    {name: 'Bug Juice', price: 8},
    {name: 'NaN-grain Bread', price: 15},
    {name: 'Bookworms', price: 16},
    {name: 'Nulled Cider', price: 23},
    {name: 'Array.pop() Corn', price: 42}
];

const prices = groceries.map(item=>item.price),
const hours = [8,8,6,0,8,8,12]