1
resposta

Conclusão

Tenho certeza que não ficou o mais otimizado que dava, mas eu tentei. Inclusive acabei usando o método .Reduce().

const produtos = [
  { nome: 'Notebook', preco: 2500, quantidadeVendida: 75 },
  { nome: 'Mouse', preco: 100, quantidadeVendida: 180 },
  { nome: 'Teclado', preco: 150, quantidadeVendida: 125 },
  { nome: 'Monitor', preco: 900, quantidadeVendida: 95 }
];

console.log('Relatório de produtos vendidos:\n')

for (let p of produtos) {
    console.log(`Produto: ${p.nome} | Preço: R$${p.preco} | Quantidade vendida: ${p.quantidadeVendida} unidades`);
};

console.log('\nProdutos com alto volume de vendas (acima de 100):')

const maisVendidos = produtos.filter(p => {
    if (p.quantidadeVendida >= 100) console.log(p.nome);
});

console.log('\nTotal de vendas por produto:')

for (let p of produtos) {
    console.log(`Total de vendas do ${p.nome}: R$${p.preco * p.quantidadeVendida}`);
};

console.log('\nProduto mais lucrativo:');

const maisLucrativo = produtos.reduce((anterior, atual) => {
    const lucroAnterior = anterior.preco * anterior.quantidadeVendida;
    const lucroAtual = atual.preco * atual.quantidadeVendida;

    return lucroAtual > lucroAnterior ? atual : anterior;
});

console.log(`\nProduto mais lucrativo: ${maisLucrativo.nome}, com R$${maisLucrativo.preco * maisLucrativo.quantidadeVendida} em vendas.`);
1 resposta

Fala, Angelo! Tudo bem?

Parabéns por concluir a atividade e compartilhar sua solução. Seu raciocínio ficou muito bom, e o uso do .reduce() para encontrar o produto mais lucrativo foi uma ótima escolha para esse tipo de problema.

Uma dica para refinar ainda mais o código é observar o uso do .filter(): quando a ideia for apenas percorrer os itens e imprimir informações no console, o .forEach() costuma ser mais adequado. Também vale pesquisar sobre Intl.NumberFormat, que ajuda a formatar valores em moeda brasileira, como R$ 187.500,00, deixando a saída mais profissional.

Bons estudos!

Sucesso

Imagem da comunidade