Calculo via Javascript

Asked

Viewed 39 times

4

I’m having trouble making a price calculation for various products on the Front-end.

I have a array of products and I need to add them through a function.

Example:

produto[0] = {produto:'Camisa',preco:'45,90'};
produto[0] = {produto:'Calça', preco:'100,99'};

function somarTudo(arrProdutos){
   var total = 0;
      for (i = 0; i < arrProdutos.length; i++) { 
          total += arrProdutos[i].preco;
      }
}

somarTudo(produto);

It’s just that you’re giving me a strange value in return:

"45,90100,99"

What I need to do?

1 answer

5


These values are in the format String and not Number. And how Javascript uses + also to join/concatenate strings he ends up thinking that this is text.

To turn number text into numbers that Javascript can read you have to use. to separate the decimal part and not have ,. Then you have to treat this text before using/converting to number.

You can do it like this:

var produto = [{
    produto: 'Camisa',
    preco: '45,90'
  },
  {
    produto: 'Calça',
    preco: '100,99'
  }
];


function somarTudo(arrProdutos) {
  var total = 0;
  for (i = 0; i < arrProdutos.length; i++) {
  var preco = arrProdutos[i].preco.replace(/\./g, '').replace(',', '.');
    total += Number(preco);
  }
  return total;
}

var total = somarTudo(produto);
console.log(total); // 146.89

Another suggestion could be like this:

var produto = [{
    produto: 'Camisa',
    preco: '45,90'
  },
  {
    produto: 'Calça',
    preco: '100,99'
  }
];


function somarTudo(arrProdutos) {
  return arrProdutos.reduce((soma, prod) => {
    var preco = prod.preco.replace(/\./g, '').replace(',', '.');
    return soma += Number(preco);
  }, 0);
}

var total = somarTudo(produto);
console.log(total); // 146.89

  • 1

    Show, solved the problem. Thanks :D

Browser other questions tagged

You are not signed in. Login or sign up in order to post.