javascript - 按多个值分组 Underscore.JS 但保留键和值

标签 javascript underscore.js

我正在尝试将以下数组与对象分组:

[ { user_id: 301, alert_id: 199, deal_id: 32243 },
  { user_id: 301, alert_id: 200, deal_id: 32243 },
  { user_id: 301, alert_id: 200, deal_id: 107293 },
  { user_id: 301, alert_id: 200, deal_id: 277470 } ]

如您所见,它包含 user_id 和 alert_id 组合,我喜欢将它们分组。所以我想要以下数组:

[ { user_id: 301, alert_id: 199, deals: [32243] },
  { user_id: 301, alert_id: 200, deals: [32243,107293,277470]}]

有人知道解决这个问题的方法吗?使用下划线的 GroupBy,我可以根据一个键对值进行分组。但我需要根据组合 user_id 和 alert_id 对它们进行分组,如您所见。

我看了一下underscore.nest ,但问题是它会创建自己的 key 。

最佳答案

使用groupBy具有使用 user_id 和 alert_id 创建复合键的函数。然后跨组映射以获得您想要的内容:

    var list = [ { user_id: 301, alert_id: 199, deal_id: 32243 },
      { user_id: 301, alert_id: 200, deal_id: 32243 },
      { user_id: 301, alert_id: 200, deal_id: 107293 },
      { user_id: 301, alert_id: 200, deal_id: 277470 } ];

    var groups = _.groupBy(list, function(value){
        return value.user_id + '#' + value.alert_id;
    });

    var data = _.map(groups, function(group){
        return {
            user_id: group[0].user_id,
            alert_id: group[0].alert_id,
            deals: _.pluck(group, 'deal_id')
        }
    });

关于javascript - 按多个值分组 Underscore.JS 但保留键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550624/

相关文章:

javascript - 检查 javascript 函数中的 php 变量

javascript - 如何使用 z-index 使链接单击显示 div 内容?

javascript - Shiny 的模态窗口不接受 js 和 css

javascript - Laggy 变换 : translate on Android, 在 iOS 上平滑

javascript - 查找两个 Javascript 对象的公共(public)成员

javascript - 在 Web 应用程序 (ASP.NET 2.0) 中显示更多按钮的工具栏

javascript - 如何从 Angular Directive(指令)中的数组中删除

Javascript 过滤并获取多个索引

javascript - 使用 Underscore 从对象属性创建一个大数组

javascript - es6 相当于下划线 findWhere