#javascript #backbone.js #underscore.js
#javascript #backbone.js #underscore.js
Вопрос:
Я создаю интернет-магазин, в котором клиенты могут выбирать разные товары и настраивать каждый с точки зрения разных цветов. При оформлении заказа я хотел бы сгруппировать их в первую очередь по описанию товара, а затем разделить возвращенные группы на дополнительные группы цветов.
Кажется, я не могу сделать это рекурсивно. Это то, что у меня есть до сих пор, чтобы возвращать группы элементов
var groupedItems = this.collection.groupBy(function(model){ return model.get('description');});
Как я могу запустить его снова, чтобы получить этот вывод и сгруппировать по цветам? Я думаю, мне может понадобиться снова превратить выходные данные в коллекцию?
Любая помощь с благодарностью
Комментарии:
1. Функция groupBy Backbone — это просто прокси для подчеркивания groupby , поэтому вы используете это. Что-то вроде
var groupedColours = _.groupBy(groupedItems, function (item) {return item.get('colour');},this);
2. Спасибо за ответ @Jack. Вы указали мне правильный путь, и теперь у меня есть то, что работает! Это код, к которому я пришел.
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 ; }
3. Рад помочь, хотя я думаю, что вы забыли опубликовать код, к которому пришли.
4. хех, да, я немного новичок в стеке — я нажал return слишком рано! Я добавил его сейчас, но он не очень хорошо отформатирован
5. В общем, лучше всего скорее обновить ваш вопрос соответствующей информацией (ее также проще отформатировать), то есть, если это часть вопроса, если это решение, тогда вы можете опубликовать его в качестве ответа (хотя вам, возможно, придется немного подождать, прежде чем вы сможете ответить на свой вопрос).собственный вопрос).
Ответ №1:
В ответ на мой первоначальный вопрос с решением, к которому Джек указал мне путь, это код, который я использовал для группировки коллекции по одному атрибуту, за которым следует подгруппа другого атрибута. При этом используется символ подчеркивания 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 ;
}