Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一行下划线以将集合转换为对象的对象_Javascript_Underscore.js - Fatal编程技术网

Javascript 在一行下划线以将集合转换为对象的对象

Javascript 在一行下划线以将集合转换为对象的对象,javascript,underscore.js,Javascript,Underscore.js,我试图找到一个下划线一行,将一个集合转换为字典的字典,以便以后快速访问 示例:转换此 [ {a:'prop1', b:'subProp1', c:'first' }, {a:'prop1', b:'subProp2', c:'second'}, {a:'prop2', b:'subProp1', c:'third'}, {a:'prop2', b:'subProp2', c:'forth'} ] 进入这个 { prop1 : {

我试图找到一个下划线一行,将一个集合转换为字典的字典,以便以后快速访问

示例:转换此

[
    {a:'prop1', b:'subProp1', c:'first' }, 
    {a:'prop1', b:'subProp2', c:'second'}, 
    {a:'prop2', b:'subProp1', c:'third'}, 
    {a:'prop2', b:'subProp2', c:'forth'}
]
进入这个

{
    prop1 : 
    { 
        subProp1 : {a:'prop1', b:'subProp1', c:'first' },
        subProp2 : {a:'prop1', b:'subProp2', c:'second'}
    },
    prop2 : 
    { 
        subProp1 : {a:'prop1', b:'subProp1', c:'third' },
        subProp2 : {a:'prop1', b:'subProp2', c:'forth'}
    }
}
我知道使用循环非常简单,但我正在寻找下划线可能提供的外观整洁的解决方案

我已经尝试过groupbBy和indexBy,但我仍然需要在某个地方进行循环,这是我正在努力避免的。

多亏了
做到了这一点:

_.reduce(collection, function (aggr, obj) {
                        aggr[obj.a] = aggr[obj.a] || {};
                        aggr[obj.a][obj.b] = obj;
                        return aggr;
                    }, {});

请不要直接问代码。显示您的尝试。查看。您必须返回
aggr
。如果您使用的是本机
数组#reduce
,至少您可以这样做,但不知道下划线。