我从多维数组开始,如下所示:
[
['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
有人知道我如何实现上述结果吗?
谢谢
最佳答案
我可能会做这样的事情,这很容易变成下划线混合:
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. (变成了 mixin)
关于javascript - JS Lodash : Multidimensional array to object, 有所变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845759/