我不确定我在这方面做错了什么。当我尝试运行代码时,它说这里有一个未定义:
obj[array[i]array[j][0]] = obj[array[i]array[j][1]];
有人可以解释一下我做错了什么吗? 我正在寻找生成一个看起来像
的对象返回obj = {
firstName:'Joe'
}
var array = [
[
['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'clerk']
],
[
['firstName', 'Mary'], ['lastName', 'Jenkins'], ['age', 36], ['role', 'manager']
]
]
function transformEmployeeData(array){
var obj = {};
for(var i = 0; i < array.length; i++){
for(var j = 0; j < array[i].length; j++){
obj[array[i]array[j][0]] = obj[array[i]array[j][1]];
}
}
return obj;
}
transformEmployeeData(array);
最佳答案
一种简单的方法是使用 map 创建对象数组,并使用 forEach 分配每个名称/值对。
var array = [
[
['firstName', 'Joe'],
['lastName', 'Blow'],
['age', 42],
['role', 'clerk']
],
[
['firstName', 'Mary'],
['lastName', 'Jenkins'],
['age', 36],
['role', 'manager']
]
]
function transformEmployeeData(array){
return array.map(a =>{
var obj = {};
a.forEach(a => obj[a[0]] = a[1]);
return obj;
});
}
var results = transformEmployeeData(array);
console.log(results[0]);
console.log(results[1]);
或更紧凑的形式
function transformEmployeeData(arr){
var obj;
return arr.map(a => (a.forEach((a, i) => (obj = !i ? {} : obj, obj[a[0]] = a[1])), obj));
}
关于javascript - 将 JavaScript 数组转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41795007/