Underscore.js groupBy несколько значений
Используя Underscore.js, я пытаюсь сгруппировать список элементов несколько раз, т.
Группировать по размеру, затем для каждого размера, группировать по категориям ...
http: //jsfiddle.net/rickysullivan/WTtXP/1
В идеале, я бы хотел иметь функцию или расширить_.groupBy()
чтобы можно было создать массив с параметрами для группировки.
var multiGroup = ['size', 'category'];
Вероятно, можно просто сделать миксин ...
_.mixin({
groupByMulti: function(obj, val, arr) {
var result = {};
var iterator = typeof val == 'function' ? val : function(obj) {
return obj[val];
};
_.each(arr, function(arrvalue, arrIndex) {
_.each(obj, function(value, objIndex) {
var key = iterator(value, objIndex);
var arrresults = obj[objIndex][arrvalue];
if (_.has(value, arrvalue))
(result[arrIndex] || (result[arrIndex] = [])).push(value);
У меня болит голова, но я думаю, что здесь нужно еще что-то толкать ...
});
})
return result;
}
});
properties = _.groupByMulti(properties, function(item) {
var testVal = item["size"];
if (parseFloat(testVal)) {
testVal = parseFloat(item["size"])
}
return testVal
}, multiGroup);