Desafio final: fatura de compras
Junte laço, objetos, condição e arrays para calcular o total de uma compra com frete.
Enunciado
Uma loja online precisa calcular o total de cada pedido. Escreva totalFatura(itens, minimoFreteGratis, frete):
itensé um array de objetos{ preco, qtd };- o subtotal é a soma de
preco * qtdde todos os itens; - se o subtotal for maior que
minimoFreteGratis, o frete é grátis; caso contrário, some o valor defrete; - retorne o total, arredondado em 2 casas decimais (use
Math.round(x * 100) / 100).
Exemplos:
totalFatura([{preco: 10, qtd: 2}, {preco: 5, qtd: 1}], 100, 15)retorna40(subtotal 25 + frete 15)- Subtotal de 130 com mínimo 100: retorna
130(frete grátis)
Processamento local: nada do que você digita sai do seu navegador.
O conceito
Problemas maiores ficam fáceis quando você os divide em etapas pequenas: somar os itens, decidir o frete e juntar tudo. Cada etapa usa algo que você já aprendeu.
É como fechar a conta no mercado: o caixa passa item por item (laço), vê se o total passou do valor da entrega grátis (condição) e só então diz quanto você paga.
const item = { preco: 10, qtd: 3 };
const subtotal = item.preco * item.qtd;
// subtotal vale 30Erros comuns
- Esquecer de multiplicar pela quantidade e somar só os preços.
- Usar
>=em vez de>, contrariando o enunciado. - Não arredondar e receber números como 59.699999999999996, por causa de como o computador guarda decimais.
Perguntas frequentes
Como acesso um campo de um objeto?
Com o ponto: item.preco devolve o valor do campo preco do objeto item.
Por que arredondar o valor?
Computadores guardam decimais de forma aproximada, então somas como 0.1 + 0.2 podem dar resultados com muitas casas.
Veja também
Precisa de um sistema ou app sob medida?
A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.
Fale com a VcInova