合并对象总结一个属性的JavaScript [英] merge object & sum a single property javascript

查看:56
本文介绍了合并对象总结一个属性的JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的数组

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

我要从中将类似的item_guid合并为一个对象,数量如此总结

What i want from this to merge similar item_guid into one object and quantity get summed up like this

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

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

I know this can be achieved some loop, instead I'm looking for solutions that uses lodash or EcmaScript2015 code to make our life easier

推荐答案

一种简单的方法:

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

Loop over data and create an object where key will be unique id and its value will be quantity. Then loop back over object's keys and create objects.

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)

这篇关于合并对象总结一个属性的JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆