如何分组和对象数组?

时间:2015-03-31 08:43:25

标签: javascript arrays

我想按ID分组数组,并在Jquery中按数量求和? 例如:

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

在我按ID分组后,我会得到新的数组,如:

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

2 个答案:

答案 0 :(得分:23)

你可以循环并总结

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

答案 1 :(得分:1)

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