我有一个 Backbone 集合,其中包含以下对象:
users = {
'name': 'Johan',
'groups': [1234, 5678]
}, {
'name': 'Thomas',
'groups': [1234]
}, {
'name': 'Adam',
'groups': [1234, 5678, 7890]
};
我想计算“组”
并将其保存在 map 中,例如:
countArray = [1234 : 3 , 5678 : 2, 7890: 1];
这样我就可以访问;
countArray[1234] -> return 3;
或
countArray.get('1234') -> return 3;
无论哪种方式
这样我就可以_.each
我的其他集合“classes”
并查找每个类别中的用户数量。
我正在考虑使用函数式编程并以某种方式使用_.groupBy
,但我没有找到返回多个值的方法。
最佳答案
_.groupBy
将允许您聚合给定键或函数返回的值上的对象,您将无法在同一遍中对多个对象进行分类。
您可以使用两个 _.each
来构建映射对象:
var c = new Backbone.Collection(users);
var res = {};
c.each(function(m) {
_.each(m.get('groups'), function(g) {
res[g] = res[g] || 0;
res[g]++;
});
});
console.log(res);
关于javascript - 主干集合 groupby 数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340203/