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

IT技术 javascript arrays grouping
2021-01-13 17:37:27

我想对一组对象进行分组,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 }
]
2个回答

你可以循环并总结

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)

小提琴:小提琴

qtyres[value.Id] = { qty: 0, Id: value.Id};步骤中设置为 0 很重要否则你会得到重复的值
2021-03-16 17:37:27
这不应该是 var result = array.reduce.... 而不是使用副作用吗?
2021-03-18 17:37:27
var newArr = [];

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

演示

这使用 element.id 作为数组索引,而不是对象键。
2021-04-01 17:37:27
您不是在创建对象数组
2021-04-08 17:37:27