如何在每个模型中使用数组属性对Backbone.js中的集合进行分组

时间:2013-02-08 14:41:14

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

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

我的代码

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循环中断。

任何想法??

由于

1 个答案:

答案 0 :(得分:0)

假设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;
}