Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to group by and sum an array of objects? [duplicate]

I would like to group an array of objects by Id and sum the quantity in jQuery. How can I achieve this?

For example:

var array = [   { Id: "001", qty: 1 },   { Id: "002", qty: 2 },   { Id: "001", qty: 2 },   { Id: "003", qty: 4 } ] 

Should result in:

[   { Id: "001", qty: 3 },   { Id: "002", qty: 2 },   { Id: "003", qty: 4 } ] 
like image 230
Phirum Avatar asked Mar 31 '15 08:03

Phirum


2 Answers

You can loop and sum it up

var array = [    { Id: "001", qty: 1 },     { Id: "002", qty: 2 },     { Id: "001", qty: 2 },     { Id: "003", qty: 4 }  ];    var result = [];  array.reduce(function(res, value) {    if (!res[value.Id]) {      res[value.Id] = { Id: value.Id, qty: 0 };      result.push(res[value.Id])    }    res[value.Id].qty += value.qty;    return res;  }, {});    console.log(result)

Fiddle: Fiddle

like image 200
Arun P Johny Avatar answered Sep 22 '22 18:09

Arun P Johny


var newArr = [];  $.each(array,function(index,element){     if(newArr[element.Id]==undefined){         newArr[element.Id] =0;     }     newArr[element.Id] += element.qty; }); console.log(newArr); 

Demo

like image 20
Sadikhasan Avatar answered Sep 24 '22 18:09

Sadikhasan