我从多维数组开始,如下所示:
[
['prop1', 'prop2', 'prop3', 'prop3'],
['val1', 'val2', 'val3', 'val4']
]
我需要在这样的对象中转换它:
{ prop1: 'val1',
prop2: 'val2',
prop3: ['val3', 'val4']
}
通常,我可以使用
_.object(array[0], array[1])
来解决此问题,但是重复键prop3
的存在会使事情复杂得多。实际
_.object
将设置prop3: 'val4'
,擦除val3
有人对我如何实现上述结果有想法吗?
谢谢
最佳答案
我可能会做这样的事情,这很容易变成下划线mixin:
var arr = [
['prop1', 'prop2', 'prop3', 'prop3'],
['val1', 'val2', 'val3', 'val4']
],
keys = arr[0],
vals = arr[1],
obj = {};
keys.forEach( function( name, index )
{
if ( !Object.prototype.hasOwnProperty.call(obj, name) )
{
obj[name] = vals[index];
}
else
{
if ( obj[name] instanceof Array )
{
obj[name].push( vals[index] );
}
else
{
var val = obj[name];
obj[name] = [val, vals[index]];
}
}
} );
Example in a fiddle.(变成混入)
jsPerf comparison with underscore-based code.
关于javascript - JS Lodash:带有对象的多维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22845759/