【问题标题】:How to use group a collection in Backbone.js by an array attribute in each model如何通过每个模型中的数组属性对 Backbone.js 中的集合进行分组
【发布时间】:2013-02-08 14:41:13
【问题描述】:

我有一个集合,其中每个模型都有一个包含名称数组的属性“名称”。我想按每个名字分组。每个模型都可以有很多名称。

我的代码

groupByName: function(){
 return this.collection.groupBy(function(item){
   for (var i=0; i<item.get('names').length; i++){
      return item.get('names')[i]['description']; //description: get name by id
   }
 });
},

问题在于,在这段代码中,groupBy 只是按每个数组的名字分组,因为返回会破坏 for 循环。

有什么想法吗??

谢谢

【问题讨论】:

    标签: javascript backbone.js collections group-by underscore.js


    【解决方案1】:

    假设names 数组不包含重复条目,可能类似于:

    groupByName: function () {
      var grouped = {};
      this.collection.each(function (item) {
        var names = item.get('names');
        for (var i = 0; i < names.length; i++) {
          var description = names[i].description;
          var group = grouped[description] || (grouped[description] = []);
          group.push(item);
        }
      });
      return grouped;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 2021-08-09
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多