How to sum numeric values of an array?

0

I would like to know how I can get the sum of numeric values inside an array. My case is this, I am building a sales screen, currently I have an array with the products that the user selects to sell, I am displaying them on the screen normally. But I need to capture every value (price) of each product, and in the end I need to add all prices to get the full value of the sale, but I'm not sure how to do it.

My current structure is as follows:

//Capturo o objeto produto que foi selecionado, 1 ou mais produtos//
if(produto.selecionado == true && produto.selecionado >= 1){
  this.produtosMarcados.push(produto);
} 
   this.venda.produtos = this.produtosMarcados;
   console.log(this.venda.produtos);
}

//Capturo a descricao do item e os valores//
//Capturo a descricao dos produtos, funciona perfeitamente//
var i: any;
for (i=0; i < this.venda.produtos.length; i++){
  console.log("Os produtos são " +this.venda.produtos[i].descricao);
}

//Capturo o preço de cada item, funciona perfeitamente//
var v: any;
for (v=0; v < this.venda.produtos.length; v++){
  console.log("Os valores são " +this.venda.produtos[v].preco);
}

After that button, I need to put on the screen the total value of the sale, where I need to add each position of the array.

    
asked by anonymous 17.09.2018 / 20:34

2 answers

1

You can use the Reduce function.

console.log(this.venda.produtos.reduce((total, produto) => total + produto.preco));

More about Reduce here: link

    
17.09.2018 / 20:57
1

I agree with Bruno Soares, where Reduce is the best solution for the sum. But from what I noticed, in the variable this.sell.products you have an array of objects.

This way you can map to make this array of objects into an array of values and then use reduce to add those values.

Example:

var produto = [{preco: 1}, {preco: 2}];

console.log(produto.map((prod) => prod.preco).reduce((total, preco) => total + preco));
    
17.09.2018 / 21:51