Skip to content

Instantly share code, notes, and snippets.

@nathabonfim59
Last active August 3, 2017 13:46
Show Gist options
  • Save nathabonfim59/7ba4051c137a35a94b28ccca3d2c4880 to your computer and use it in GitHub Desktop.
Save nathabonfim59/7ba4051c137a35a94b28ccca3d2c4880 to your computer and use it in GitHub Desktop.
FullStackAcademy - aula 1 - exercício 2
// Exercício 2
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
}
]
/**
* Gera um array com os produtos em estoque (quantidade > 0)
* @param {array} produtos
*/
const emEstoque = function(produtos) {
function verificaDisponibilidade(produto) {
if (produto.qtd > 0) {
return produto
}
}
return produtos.filter(verificaDisponibilidade)
}
/**
* Gera um array com os subtotais (preco * quantidade) dos produtos
* @param {array} produtos
*/
const valorEmEstoque = function(produtos) {
function calculaSubTotal(subTotal, produto) {
return subTotal.concat({
id: produto.id,
sub_total: (produto.preco * produto.qtd)
})
}
return produtos.reduce(calculaSubTotal, [])
}
/**
* Soma os subtotais fornecidos
*
* Estrutura: subtotais = [ {id: 1, sub_total: 20} ]
* @param {array} subtotais
*/
const somaSubTotais = function(subtotais) {
function calculaSomaSub(soma, produto) {
return soma + produto.sub_total
}
return subtotais.reduce(calculaSomaSub, 0)
}
console.log('=================================')
console.log(' Em estoque')
console.log('=================================')
console.log(emEstoque(produtos))
console.log('=================================')
console.log(' Sub-totais')
console.log('=================================')
console.log(valorEmEstoque(produtos))
console.log('=================================')
console.log(' Soma dos Sub-totais')
console.log('=================================')
console.log(somaSubTotais(valorEmEstoque(produtos)))
console.log('=================================')
@tuliofaria
Copy link

Certinho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment