json - Backbone cartesian product with another groupBy -


i have app in backbone use function create cartesian product.

this function:

    function cartesian(arg) {             var r = [], max = arg.length - 1;             function helper(arr, i) {                 (var j = 0, l = arg[i].length; j < l; j++) {                     var = arr.slice(0); // clone arr                     a.push(arg[i][j]);                     if (i == max) {                         r.push(a);                     } else helper(a, + 1);                 }             }         helper([], 0);         return r;     } 

to call inside backbone this:

return cartesian(_.values(this.rooms.groupby('level'))); 

this example of json fetched object rooms:

[{"hotelid":"10776","combination":"0|2|0|0|0","n_camere":2,"level":1,"id":"98%7e%7e%7edouble_1"}, {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"99%7e%7e%7esingle_1"}, {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"100%7e%7e%7etriple_1"}, {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"}] 

in mode cartesian product have 3 array grouped level every array have last array because level2 that:

{"hotelid":"10776","combination":"0|2|0|0|0","n_camere":2,"level":1,"id":"98%7e%7e%7edouble_1"}, {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"}  ---------------     {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"99%7e%7e%7esingle_1"}, {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"}  ---------------     {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"100%7e%7e%7etriple_1"}, {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"} 

. want implement groupby level , combination because in level 1 there array same combination field , goal lis array that:

{"hotelid":"10776","combination":"0|2|0|0|0","n_camere":2,"level":1,"id":"98%7e%7e%7edouble_1"},     {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"}      ---------------         {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"99%7e%7e%7esingle_1"}, {"hotelid":"10776","combination":"1|0|1|0|0","n_camere":2,"level":1,"id":"100%7e%7e%7etriple_1"},     {"hotelid":"10776","combination":"1|0|0|0|0","n_camere":1,"level":2,"id":"98%7e%7e%7edouble_2"} 

is possible obtain result?


Comments