0

各モデルが名前の配列を含む「名前」属性を持つコレクションを取得しました。それぞれの名前でグループ化したい。各モデルにはたくさんの名前があります。

私のコード

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 ループを壊すことです。

何か案が??

ありがとう

4

1 に答える 1

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;
}
于 2013-02-08T15:59:32.510 に答える