javascript - 合并对象并对单个属性求和javascript

标签 javascript lodash

我有一个这样的数组

[
  {
    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)

关于javascript - 合并对象并对单个属性求和javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262445/

相关文章:

javascript - 如何使用 useState 打乱嵌套数组

javascript - 使用 Angular 工厂和 lodash 从 JSON 检索一个对象

javascript - 如何在 javascript 中选择正确的键 py 值?

javascript - 字符串替换某些匹配组,而不是整个匹配

javascript - Node JS,传统数据结构? (例如 Set 等),诸如 Java.util 之类的 Node ?

javascript - 从字符串中删除图像元素

javascript - 以编程方式选择javascript中对象的属性

javascript - CORS 重定向工作意外

typescript - 在 typescript 中写一个类型安全的 'pick' 函数

javascript - 如何在 JSDoc 中创建类别?