Plenty Left pt-br Explainer

Explicação de Sobrou bastante

Objetivo do desafio: Use o método de array .reduce() para calcular o saldo restante em um cartão presente.

Passo a passo da solução: Neste desafio, você usará o método reduce() para subtrair cada número em uma array de números de um cartão presente.

.reduce() pode ser um dos métodos de array mais difíceis de aprender, então vamos dar uma olhada de perto em como ele funciona neste desafio.


let giftCard = 100;

let prices = [11.16, 5.02, 5.29, 6.14];

Isto declara uma variável giftCard e estabelece seu valor como 100, assim como a array prices, sendo cada elemento um número.


let remaining = prices.reduce((balance, current) => {

return balance - current;

}, giftCard);

.reduce() usa 2 argumentos: uma função retorno de chamada e um valor inicial. A função retorno de chamada também usa 2 parâmetros: o valor total até agora e o valor atual.

Neste desafio, o 1º argumento de .reduce() é a função retorno de chamada:


(balance, current) => {

return balance - current;

}

Nesta função, balance é o acumulador e se lembra do valor total calculado conforme o método reduce faz a iteração (laços) pela array. current representa o elemento da array atual conforme reduce faz a iteração.

return balance - current subtrai o elemento da array atual do valor total que está sendo calculado.

O segundo argumento de .reduce() é um valor inicial a ser usado para balance na função retorno de chamada. Neste caso, giftCard é usado como argumento, para estabelecer o equilíbrio para 100. Se nenhum 2º argumento for dado a .reduce(), o 1º elemento da array é automaticamente usado para definir o valor inicial.

O valor resultante após a redução da array é salvo na variável remaining.

Vejamos como este valor é calculado:

Como giftCard foi usado como o 2º argumento para .reduce(), o valor inicial de balance está definido como 100. Quando .reduce() analisa 11.16, o 1º elemento em prices, calcula 100 - 11.16, que é 88.84.

Em seguida, .reduce() passa para o próximo número da array, 5.02 e calcula 88.84 - 5.02, que é 83.82.

Para a próxima iteração, ele calcula 83.82 - 5.29, que retorna 78.53.

Para o último elemento em prices, ele calcula 78.53 - 6.14, que retorna 72.39.

Este valor final, 72.39, é então retornado na variável remaining.

Ufa!

Solução do código de exemplo:


let giftCard = 100;

let prices = [11.16, 5.02, 5.29, 6.14];

let remaining = prices.reduce((balance, current) => {

return balance - current;

}, giftCard);

console.log(remaining);

Conceitos de JavaScript: Arrays, Métodos de array, .reduce(), Iteração, console.log

1 Like