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
,至少您可以这样做,但不知道下划线。