Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

novo código

refiz meu código após novos estudos, gostaria de uma opinião.
let carrinho = [];
let total;
limpar();
function adicionar (){
let produto = document.getElementById('produto').value
let nomeProduto = produto.split('-')[0].trim();
let valorProduto = Number(produto.split('$')[1]);
let quantidadeProduto = Number(document.getElementById('quantidade').value);
const produtoProcurado = carrinho.find( prod => prod.nomeProduto === nomeProduto)
if (produtoProcurado){
produtoProcurado.quantidadeProduto += quantidadeProduto;
produtoProcurado.subtotal = produtoProcurado.quantidadeProdutovalorProduto
} else {
carrinho.push ({nomeProduto: nomeProduto,
valorProduto: valorProduto,
quantidadeProduto: quantidadeProduto,
subtotal: quantidadeProduto
valorProduto})
}
total = carrinho.reduce((acc,item) => item.subtotal + acc, 0);
produtosNoCarrinho(carrinho);

}

function limpar (){
carrinho = [];
total = 0;
produtosNoCarrinho(carrinho);

}

function produtosNoCarrinho(lista){
document.getElementById('lista-produtos').innerHTML = lista.map((itemAtual) => <section class="carrinho__produtos__produto"> <span class="texto-azul">${itemAtual.quantidadeProduto}x</span> ${itemAtual.nomeProduto} <span class="texto-azul">R$${itemAtual.subtotal}</span> </section>).join('');
document.getElementById('valor-total').innerHTML = R$${total};
}

1 resposta

Fala, Renata! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a função adicionar para manipular o carrinho em JavaScript, entendeu perfeitamente a importância da reduce para calcular o total e usou bem o map com join para renderizar dinamicamente os produtos na tela.

E algumas boas práticas que você pode adotar são:

  • Generalização: separar a lógica em funções menores, como calcularSubtotal().
  • Legibilidade: usar nomes consistentes para variáveis, como quantidade e preco.
  • Validação: garantir que o usuário não insira quantidade negativa ou valor inválido.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere evoluir esse carrinho para incluir remoção de produtos ou já pensa em implementar cálculo automático de frete e desconto?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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