-
-
Save sandrooliveira/786bc0042daafb829bc6a13696965c60 to your computer and use it in GitHub Desktop.
const produtos = [ | |
{ | |
id: 1, | |
preco: 10.0, | |
qtd: 2 | |
}, | |
{ | |
id: 2, | |
preco: 10.0, | |
qtd: 2 | |
}, | |
{ | |
id: 3, | |
preco: 10.0, | |
qtd: 2 | |
}, | |
{ | |
id: 4, | |
preco: 10.0, | |
qtd: 0 | |
} | |
] | |
console.log("2a ============================") | |
const checkQtd = value => value.qtd > 0 | |
const prodComQtd = produtos.filter(checkQtd) | |
console.log(prodComQtd) | |
console.log("2b ============================") | |
const prodSubtotais = produtos.map((produto) =>{ | |
produto.subTotal = produto.qtd*produto.preco | |
produto.id | |
return produto | |
}); | |
console.log(prodSubtotais) | |
console.log("2c ============================") | |
const somaSubtotais = prodSubtotais.reduce((anterior,atual) => { | |
return anterior + atual.subTotal | |
},0) | |
console.log(somaSubtotais) |
Então a questão do 0 eu entendi que é o valor inicial. Só não entendi porque o código abaixo retornou um NaN com um array com mais de 2 elementos.
const somaSubtotais=prodSubtotais.reduce((anterior,atual) => anterior.subTotal+ atual.subTotal)
console.log(somaSubtotais)
Fala Sandro, interessante isso.
Com 2 elementos ele faz a soma direta mesmo, e a partir de 2 ele começa a usar o valor inicial.
Se quiser descobrir um pouco mais sobre o comportamento, coloca um console.log(anterior, atual) antes de retornar a soma entre ele. Você verá que com 2 elementos ele tem apenas uma saída na tela :)
E pq saí NaN se não mudar o código? Ele tenta somar um undefined com um inteiro, e o resultado não é um número...
Para testar, tenta: console.log(undefined + 1) ;)
Ah sim, agora ficou claro! Valeu!
Fala @sandrooliveira! Seu problema seria por faltar o valor inicial? (aquele valor que vc passa depois da arrow function)