Adding data from the array

0

I have an array that the data comes from the user's filled form and I make a map:

    dados.map(element=> {

  var x     
  var number1 = parseInt(element.preco),
      number2 = parseInt(element.peso)


      var tota = number1 * number2

      console.log(x += tota);             


  this.prod.push({
  produto: element.produto,
  peso: element.peso,
  preco: element.preco,
  total: element.preco * element.peso      
  })



})

And I wanted to know how to sum the total of all total of Array which is preco * peso , I tried to make x+=tota , but it is only adding the first two

    
asked by anonymous 19.10.2018 / 15:54

3 answers

1

Javascript has a function that solves your problem, it will add all the values and return you the final result

const total = dados.reduce((a, b) => (a.preco * a.peso) + (b.preco * b.peso), 0);
    
19.10.2018 / 16:28
1

Use the reduce function as per the code below;

Documentation link

  let dados = [
       {"peso":"1", "valor":"4"},
       {"peso":"2", "valor":"5"},
       {"peso":"3", "valor":"6"},
   ]
   produto = [] ;

   let total = dados.reduce((acumulado, corrente) =>{
        corrente.valor  =parseInt(corrente.valor);
        corrente.peso  =parseInt(corrente.peso);
        corrente.total = corrente.valor * corrente.peso;
        produto.push(corrente);

        return acumulado+corrente.total;
   
   },0);
   console.log(total);
   console.log(produto);
    
19.10.2018 / 17:45
1

See if this solution helps:

    var dados = [{
        "produto": "arroz",
        "peso": "5",
        "preco": "15.90",
        "total": ""
    },
    {
        "produto": "feijão",
        "peso": "3",
        "preco": "5.90",
        "total": ""
    }];

    var new_dados = dados.map(item => {
        var r = parseInt(item.peso) * parseFloat(item.preco);
        item.total = r.toFixed(2);
        return item;
    });

    console.log(new_dados);

var total_geral = new_dados.reduce((prevVal, item) => { return prevVal + parseFloat(item.total) }, 0);

console.log('Total Geral: ',total_geral.toFixed(2));
    
19.10.2018 / 17:11