javascript - 获取对象中的重复项并合并值

标签 javascript node.js underscore.js

我有一个非常简单的问题,我就是想不出来。

我想合并所有重复的对象并跟踪我有多少重复对象。

这是我的输入:

[
  { w: 'abc', c: 1 },
  { w: 'abc', c: 1 },
  { w: 'abc', c: 1 },
  { w: 'a', c: 1 },
  { w: 'a', c: 1 },
  { w: 'b', c: 1 },
  { w: 'c', c: 1 }
]

这里是我想要的输出,

[ 
  { w: 'abc', c: 3 },
  { w: 'a', c: 2 },
  { w: 'b', c: 1 },
  { w: 'c', c: 1 }
]

_.union() 用于删除重复项,但我无法跟踪它们。

非常感谢您的帮助。

最佳答案

您可以链接下划线的方法并按 w 对项目进行分组,然后使用所需值的总和映射新对象。

var data = [{ w: 'abc', c: 1 }, { w: 'abc', c: 1 }, { w: 'abc', c: 1 }, { w: 'a', c: 1 }, { w: 'a', c: 1 }, { w: 'b', c: 1 }, { w: 'c', c: 1 }],
    result = _
        .chain(data)
        .groupBy('w')
        .map((array, w) => ({ w, c: _.reduce(array, (s, { c }) => s + c, 0) }))
        .value();

    console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

关于javascript - 获取对象中的重复项并合并值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52480871/

相关文章:

javascript - 在 sails 中设置布局和标题

symfony - 如何在渲染模板时获取下划线js中的日期格式?

Javascript - GroupBy 键以及如何为生成的对象建模

javascript - 为什么在更改路线后 Angular 不破坏 Controller $scope ?

javascript - Google Analytics 跟踪 - 可扩展参数 (utme) 未显示在 _utm.gif 请求中

node.js - 如何使用 grunt-contrib-stylus 包含 Stylus 库?

node.js - stripe connect 创建客户的正确电话号码格式

javascript - Lodash基于外部数组对集合进行排序

javascript - Fullpage.js插件: turn background image into a link

javascript - 添加 localstorage 链接作为图像 src