将复杂数组转换为对象

Fun*_*amb 0 javascript arrays object

我正在尝试获取一个嵌套数组并将其转换为一个对象。我不明白为什么undefined当我尝试打印复杂数组时会出现这种情况。

我的目标是改变这个:

var input = [
   [
       ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
   ],
   [
       ['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
   ]
];
Run Code Online (Sandbox Code Playgroud)

进入这个:

var result = [
    {firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'},
    {firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'}
]
Run Code Online (Sandbox Code Playgroud)

到目前为止我有这个。我知道我需要一个嵌套循环,但我无法让我的控制台显示任何过去的内容undefined

function transformEmployeeData(employeeData) {
    var output = {};
    var per = {};
    // console.log(per);
    // console.log(employeeData);
    console.log("ED: " + employeeData[0] + "End"); //Expecting the first array in input. Getting output: ED: End
    const obj = Object.assign({}, ...employeeData); 
    console.log("OBJ: " + obj);//Output: OBJ: [object Object]
    for (let i = 0; i < employeeData.length; i++) { //Haven't been able to get here because everything is undefined
        // console.log(employeeData[i][0] + " " + employeeData[i][1]);
        // per[employeeData[i][0][0]] = per[employeeData[i][0][0]] || {};
        // per[employeeData[i][0][0]] = employeeData[i][0][1];
    }
    // console.log("Output: " + namesObj);
}
Run Code Online (Sandbox Code Playgroud)

我已经对此进行了一个小时的实验。我确信它存在某种类型的语法错误,但我只是没有看到它。

即使是对小型嵌套数组的简单测试也会给我一个错误。

var tests = [["first", "Joe"]["Tests", "two"]];
console.log(tests[0][0]);//TypeError: Cannot read property '0' of undefined 
Run Code Online (Sandbox Code Playgroud)

ikh*_*vjs 5

您可以使用map()Object.fromEntries()

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

const output = input.map(item => Object.fromEntries(item));

console.log(output);
Run Code Online (Sandbox Code Playgroud)


Ori*_*ori 5

通过应用于每个子数组将数组映射到对象数组Object.fromEntries()

const input = [[["firstName","Joe"],["lastName","Blow"],["age",42],["role","clerk"]],[["firstName","Mary"],["lastName","Jenkins"],["age",36],["role","manager"]]];

const result = input.map(Object.fromEntries);

console.log(result);
Run Code Online (Sandbox Code Playgroud)