我正在尝试将以下数组与对象分组:
[ { 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/