2
respostas

Fiz separado por funções que realizam tarefas específicas

const produtos = [
{nome: 'refrigerador', preco: 3000, quantidadeVendida: 26},
{nome: 'Televisão', preco: 4000, quantidadeVendida: 150},
{nome: 'Celular', preco: 1800, quantidadeVendida: 300},
{nome: 'Microondas', preco: 760, quantidadeVendida: 86},
{nome: 'Airfryer', preco: 180, quantidadeVendida: 142},
{nome: 'Computador', preco: 3600, quantidadeVendida: 50},
]

function mostrarProdutos () {
console.log("\nRelatório de produtos vendidos:\n")
for (let produto of produtos) {
console.log(Produto: ${produto.nome} | preço: R$${produto.preco.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})} | Quantidade vendida: ${produto.quantidadeVendida})
}
}

function produtosComMaisVendas () {
console.log("\nProdutos com alto volume de vendas (> 100 unidades):\n")
produtos.filter(produto => produto.quantidadeVendida > 100 ? console.log(produto.nome) : false)
}

function totalDeVendasPorProduto() {
console.log("\nTotal de vendas por produto:\n")
produtos.forEach(produto => {
console.log(${produto.nome}: R$${(produto.preco * produto.quantidadeVendida).toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})})
})
}

function maisLucrativo () {
let maisLucrativo = {nome: '', total: 0}
produtos.forEach(produto => {
if ((produto.preco * produto.quantidadeVendida) > maisLucrativo.total) {
maisLucrativo.total = produto.preco * produto.quantidadeVendida
maisLucrativo.nome = produto.nome
}
})
console.log(\nProduto mais lucrativo: ${maisLucrativo.nome} com R$${maisLucrativo.total.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})} em vendas.\n)
}

function organizarRelatorio() {
mostrarProdutos()
produtosComMaisVendas()
totalDeVendasPorProduto()
maisLucrativo()
}

organizarRelatorio()

2 respostas

Oi, Alexandre! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você separou bem as responsabilidades em funções diferentes, deixando o relatório organizado e mais fácil de manter. Essa divisão ajuda bastante na leitura e também facilita ajustes futuros no código.

Uma dica interessante para o futuro é usar o método reduce para calcular valores acumulados, como o total geral de vendas. Veja este exemplo:


let totalGeral = produtos.reduce((soma, produto) => {
  return soma + (produto.preco * produto.quantidadeVendida);
}, 0);

console.log(totalGeral);

Esse código soma o valor total vendido de todos os produtos em uma única variável, deixando o cálculo mais direto e reutilizável.

Parabéns pela dedicação e pelo ótimo trabalho!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado pelo retorno Rafaela. Eu já conhecia o método reduce(), porém eu confesso que não me passou pela cabeça utilizá-lo nesse exercício. Agradeço pela sugestão, e pelo exemplo de como utilizar o reduce() neste exercício do curso. Apenas uma observação que apontei no meu próprio código posteriormente: com a adoção do método toLocaleString() para converter o valor monetário no formato em 'real', não era mais necessário eu utilizar 'R$' dentro das templates literais. Já fiz a correção. :)