javascript - 主干集合 groupby 数组属性

标签 javascript backbone.js

我有一个 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);

参见http://jsfiddle.net/nikoshr/V2qX2/1/进行演示

关于javascript - 主干集合 groupby 数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340203/

相关文章:

javascript - 在 AngularJs 中使用服务通过 $http get 获取数据

php - 用于 backbone.js Web 应用程序的良好、轻量级非 mvc php 框架

ruby-on-rails-3 - 在backbone.js中,我如何将keyup绑定(bind)到文档

backbone.js - Backbone Marionette : Add a model (and render its view) to a nested Composite View

javascript - 如何从 Backbone.js 中的集合中的另一个模型触发模型更新?

javascript - 如何确定用户在 Meteor 中使用的登录类型?

javascript - 表单提交上的日期选择器问题

javascript - Backbone .js : view object is 'undefined'

javascript - 如何正确调用photobooth.js

javascript - BackboneJS 如何添加JPlayer