Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Fiquei maluco HAHAH

fiquei uns 3 dias tentando resolver a última questão sendo que era só usar um foreach minha solução nada prática e inteligente. Vivendo e aprendendo, segue o código: 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 } ];

const copiaProdutos = produtos.slice(); const listaCompleta = copiaProdutos.map((lista) => Produto: ${lista.nome} | Preço: ${lista.preco} | Quantidade vendida: ${lista.quantidadeVendida}\n); console.log(Relatório de produtros vendidos \n); console.log(${listaCompleta.join("")})

const boasVendas = copiaProdutos.filter((vendas) => { if (vendas.quantidadeVendida >= 100){ return vendas.nome; } })

const nomeBoasVendas = boasVendas.map((r) => r.nome + "\n"); console.log(Produtos com alto volume de vendas (> 100 boasVendas):\n${nomeBoasVendas.join("")}\n);

const listaVendasPorProduto = copiaProdutos.map((lista) => ${lista.nome}: R$${lista.preco * lista.quantidadeVendida}\n); console.log(Toal de vendas por produto:\n${listaVendasPorProduto.join("")})

const valores = copiaProdutos.map((lista) => lista.preco * lista.quantidadeVendida); valores.sort((a, b) => { return b-a}); function maisLucrativo(){ const objetosTotal = copiaProdutos.length; const valoresProdutos = copiaProdutos.map((lista) => lista.preco * lista.quantidadeVendida); for (i = 0; i < objetosTotal; i++) { if (valores[0] == valoresProdutos[i]){ return console.log(Produto mais lucrativo: ${copiaProdutos[i].nome} com R$${valoresProdutos[i]} em vendas.) } } } console.log(maisLucrativo());

1 resposta
solução!

Olá Arthur! Tudo certo?

Que bom que você conseguiu resolver o problema e ainda aprendeu algo novo no processo! O forEach é realmente uma ferramenta poderosa e pode simplificar bastante o código em algumas situações. Seu código está bem estruturado e cobre várias funcionalidades interessantes.

Aqui está um pequeno ajuste e dica para o seu código:

  1. Uso do forEach: Você mencionou que poderia ter usado forEach. Ele é ótimo para iterar sobre arrays quando você não precisa criar um novo array (como map faz) ou filtrar elementos (como filter faz). Por exemplo, se você quiser apenas imprimir cada produto, forEach seria ideal:

    copiaProdutos.forEach(produto => {
      console.log(`Produto: ${produto.nome} | Preço: ${produto.preco} | Quantidade vendida: ${produto.quantidadeVendida}`);
    });
    
  2. Função maisLucrativo: No final do seu código, você está usando a função maisLucrativo para encontrar o produto mais lucrativo. Uma pequena dica: você pode usar reduce para encontrar o produto mais lucrativo de forma mais direta:

    const produtoMaisLucrativo = copiaProdutos.reduce((maisLucrativo, produtoAtual) => {
      const totalAtual = produtoAtual.preco * produtoAtual.quantidadeVendida;
      return totalAtual > maisLucrativo.total ? { nome: produtoAtual.nome, total: totalAtual } : maisLucrativo;
    }, { nome: '', total: 0 });
    
    console.log(`Produto mais lucrativo: ${produtoMaisLucrativo.nome} com R$${produtoMaisLucrativo.total} em vendas.`);
    

Isso pode tornar seu código mais conciso e fácil de entender. Espero que essas dicas sejam úteis e que você continue se divertindo e aprendendo com JavaScript!

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