javascript - JS Lodash : Multidimensional array to object, 有所变化

标签 javascript object multidimensional-array underscore.js lodash

我从多维数组开始,如下所示:

[
    ['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)

jsPerf comparison with underscore-based code.

关于javascript - JS Lodash : Multidimensional array to object, 有所变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845759/

相关文章:

javascript - Vue.js 2 : set a prop value via http. 组件挂载前get

javascript - 在 JavaScript 中管理对象构造参数

javascript - jquery 用 noimage 图标替换损坏的图像

c - 初始化二维数组

c# - 我可以将包含对象的列表转换为二维数组吗

javascript - 在 React 中刷新后保留 'loggedIn' 状态

java - Java 中引用属性的问题

java - 确定两个对象之间的差异

android - 触摸监听器和长按监听器

php - 将 MySQL 查询转换为多维数组