嵌套或不平坦的阵列

Sta*_*oux 1 javascript arrays underscore.js

我有一个看起来像这样的对象数组.

var arr = [{'id':21 ,'name' : 'name 1' ,'vehiclename' : 'vehicle 1' ,'parentid' : 21},
           {'id':21 ,'name' : 'name 1' ,'vehiclename' : 'vehicle 2' ,'parentid' : 21},
           {'id':22 ,'name' : 'name 2' ,'vehiclename' : 'vehicle 1' ,'parentid' : 22},
           {'id':22 ,'name' : 'name 2' ,'vehiclename' : 'vehicle 2' ,'parentid' : 22}]
Run Code Online (Sandbox Code Playgroud)

我想对数组进行取消或分组,现在看起来像这样.

var arr = [{'id':21,
             name: 'name 1'
             vehicles : [{'vehiclename':'vehicle 1','parentid':21},
                         {'vehiclename':'vehicle 2','parentid':21}] },
           {'id':22,
             name: 'name 2'
             vehicles : [{'vehiclename':'vehicle 1','parentid':22},
                         {'vehiclename':'vehicle 2','parentid':22}] }
           }]
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

geo*_*org 5

对于那些好奇的人来说,这是一个下划线的解决方案:

grouped = _.map(_.groupBy(arr, 'id'), function(b) {
    return _.extend(_.pick(b[0], 'id', 'name'), {
        vehicles: _.map(b, function(elem) {
            return _.pick(elem, 'vehiclename', 'parentid')
        })
    });
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/bgAzH/1/