2014-06-17 71 views
1

我正在構建一個在線商店,客戶可以選擇不同的商品並根據不同的顏色自定義每個商品。在結帳時,我想首先按照商品描述對他們進行分組,然後將返回的分組分成更多的顏色組。在backbone.js集合上遞歸使用groupBy

我似乎無法做到這一點遞歸。這是我到目前爲止返回項目

var groupedItems = this.collection.groupBy(function(model){ return model.get('description');}); 

我怎麼能再次運行它藉此輸出和group by顏色的羣體?我想我可能需要再次將輸出轉換爲集合?

任何幫助,不勝感激

+0

Backbone的groupBy函數只是下劃線的[groupby](http://underscorejs.org/#groupBy)的代理,因此您可以使用它。類似於'var groupedColours = _.groupBy(groupedItems,function(item){return item.get('color');},this);' – Jack

+0

感謝回覆@Jack。你把我放在正確的道路上,現在我有一些工作!這是我到達的代碼。 'var finalGroupedArray = []; var groupedItems = this.collection.groupBy(function(model){return model.get('description');}); var count = 0; (var描述在grouppedItems中)var groupedColours = _.groupBy(groupedItems [Object.keys(groupedItems)[count]],function(item){return item.get('color');},this); finalGroupedArray.push(groupedColours); count ++; }' – moleboy

+0

很高興爲您提供幫助,儘管我認爲您忘了發佈您抵達的代碼。 – Jack

回答

1

在回答我的傑克把我的道路上,以解決原來的問題,這是我的一個屬性,然後另一屬性的子組羣使用的收集代碼。這對Backbone groupBy的結果使用下劃線groupBy。

var finalGroupedArray = []; 
var groupedItems = this.collection.groupBy(function(model){ return model.get('description');}); 
var count = 0; 

for(var description in groupedItems){ 
    var groupedColours = _.groupBy(groupedItems[Object.keys(groupedItems)[count]], function (item) {return item.get('colour');},this); 
    finalGroupedArray.push(groupedColours); 
    count++; 
}