合并对象并汇总单个属性javascript

我有这样的数组

[
  {
    item_guid: "57e7a1cd6a3f3669dc03db58"
    quantity:3
  },
  {
    item_guid: "57e77b06e0566d496b51fed5"
    quantity:3
  },
  {
    item_guid: "57e7a1cd6a3f3669dc03db58"
    quantity:3
   },
  {
    item_guid: "57e77b06e0566d496b51fed5"
    quantity:3
  }
]

我想要的是将类似的item_guid合并为一个对象,数量像这样总结

[
  {
    item_guid: "57e7a1cd6a3f3669dc03db58"
    quantity:6
   },
  {
    item_guid: "57e77b06e0566d496b51fed5"
    quantity:6
  }
]

我知道可以通过一些循环来实现,而我正在寻找使用lodash或EcmaScript2015代码的解决方案,以使我们的生活更轻松

解决方法:

一个简单的方法:

遍历数据并创建一个对象,其中键将是唯一的id,其值将是数量.然后环回对象的键并创建对象.

var data = [{ item_guid: "57e7a1cd6a3f3669dc03db58", quantity: 3 }, { item_guid: "57e77b06e0566d496b51fed5", quantity: 3 }, { item_guid: "57e7a1cd6a3f3669dc03db58", quantity: 3 }, { item_guid: "57e77b06e0566d496b51fed5", quantity: 3 }],

var r = {};
data.forEach(function(o){
  r[o.item_guid] = (r[o.item_guid] || 0) + o.quantity;
})

var result = Object.keys(r).map(function(k){
  return { item_guid: k, quantity: r[k] }
});
console.log(result)
上一篇:pdf生成(itextSharp)


下一篇:javascript – 基于外部数组的Lodash排序集合