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)
您可以使用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)
通过应用于每个子数组将数组映射到对象数组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)