Aprender / Desafio final: fatura de compras

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 * qtd de todos os itens;
  • se o subtotal for maior que minimoFreteGratis, o frete é grátis; caso contrário, some o valor de frete;
  • 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) retorna 40 (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 30

Erros 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