繁体   English   中英

Javascript-将嵌套数组转换为对象数组

[英]Javascript - nested arrays transformed to array of objects

我有一个像这样的嵌套数组数据结构-

var arrays = [
        [
            ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
        ],
        [
            ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
        ]
    ];

我需要将其转换为对象数组-

[
        {firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
        {firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
    ]..



    My code below gives- 

    function objectArray(arr) {
      var obj1 ={};
      var empData=[];
        for (var i = 0; i < arr.length; i++)
        {
            if (Array.isArray(arr[i]))
                { 
                  arr[i].reduce(function(acc,prd){
                   // console.log(prd);
                       console.log(acc.key=prd[0],acc.Value=prd[1]);//--> output shown below
                       return acc;
                  },{});
                }
        }
    }

     var returnArrayOfObjs = objectArray(arrays);
     var empData = [];
     empData.push(returnArrayOfObjs);
     console.log(empData);  

上面的日志语句给了我一个[undefined],如下所示:

我得到的输出如下-我在做什么错? 请帮助!

firstName Joe
lastName Blow
age 42
role clerk
firstName Mary
lastName Jenkins
age 36
role manager
[undefined]

使用Array#map迭代数组,然后Array#reduce每个子数组成为一个对象。

 const arr = [[["firstName","Joe"],["lastName","Blow"],["age",42],["role","clerk"]],[["firstName","Mary"],["lastName","Jenkins"],["age",36],["role","manager"]]]; const result = arr.map((subArr) => subArr.reduce((obj, [key, value]) => { obj[key] = value; return obj; }, {})); console.log(result); 

我写了一个forEach()解决方案,但是map() / reduce()可能更优雅,所以我赞成@OriDrori :)只是为了比较而发表。

 var arrays = [[['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']], [['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']] ]; var rst = []; arrays.forEach(function(item){ var obj = {}; item.forEach(function( subitem, index ){ obj[ subitem[0] ] = subitem[1] }); rst.push(obj); }); console.log( rst ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM