如何对对象数组进行分组和求和?

How to group by and sum an array of objects?

我想按 Id 对一组对象进行分组,然后在 jQuery 中对数量求和。我怎样才能做到这一点?

例如:

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

应该导致:

[
  { Id: "001", qty: 3 },
  { Id: "002", qty: 2 },
  { Id: "003", qty: 4 }
]

可以循环总结

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

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