Underscore.js groupBy Multiple values ​​

Используя 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);

20
задан user3335966 31 August 2015 в 11:26
поделиться