将JavaScript数组转换为对象

将JavaScript数组转换为对象,javascript,object,Javascript,Object,我不确定我在这方面做错了什么。当我试着运行代码时,它说这里有一个未定义的: obj[array[i]array[j][0]=obj[array[i]array[j][1] 有人能解释一下我在做什么吗? 我正在寻找生成一个对象返回,如下所示 obj = { firstName:'Joe' } var array = [ [ ['firstName', 'Joe'], ['lastName', 'Blow'], ['age', 42], ['role', 'cl

我不确定我在这方面做错了什么。当我试着运行代码时,它说这里有一个未定义的:
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);
obj={
名字:“乔”
}
变量数组=[
[
['firstName','Joe',['lastName','Blow'],['age',42],'role','clerk']
],
[
['firstName','Mary',['lastName','Jenkins',['age',36','role','manager']
]
]
函数transformEmployeeData(数组){
var obj={};
对于(var i=0;i
第二部分不需要数组,也不需要对象

obj[array[i][j][0]] = array[i][j][1];
您需要一个数组来收集临时对象。这个必须归还

函数transformEmployeeData(数组){
var结果=[],
obj;
对于(var i=0;ilog(transformEmployeeData(数组))第二部分不需要数组,也不需要对象

obj[array[i][j][0]] = array[i][j][1];
您需要一个数组来收集临时对象。这个必须归还

函数transformEmployeeData(数组){
var结果=[],
obj;
对于(var i=0;ilog(transformEmployeeData(数组))为什么要将数据放入数组?物体在哪里

我希望在
列表中看到
员工
对象:

public class Employee {
    private final String firstName;
    private final String lastName;
    private final LocalDate birthDate;
    private final String role;

    public Employee(String f, String n, LocalDate b, String r) {
        this.firstName = f;
        this.lastName = n;
        this.birthDate = LocalDate.from(b);
    }
    // add the rest
}

为什么要将数据放入数组中?物体在哪里

我希望在
列表中看到
员工
对象:

public class Employee {
    private final String firstName;
    private final String lastName;
    private final LocalDate birthDate;
    private final String role;

    public Employee(String f, String n, LocalDate b, String r) {
        this.firstName = f;
        this.lastName = n;
        this.birthDate = LocalDate.from(b);
    }
    // add the rest
}


您需要一个对象数组,如下所示:

    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++){
        obj.push({});
        for(var j = 0; j < array[i].length; j++){    
            obj[obj.length - 1][array[i][j][0]] = array[i][j][1];
        }    
    }    
    return obj;    
}   
var obj = transformEmployeeData(array);
var result = JSON.stringify(obj);
console.log(result);
obj[array[i]array[j][0]=obj[array[i]array[j][1]]的原因不起作用有两个原因:

1) 您希望从
array
而不是从
obj
分配给新对象,因为该对象尚不存在

2)
array[i]array[j][0]
不是对数组的有效引用。您只想使用
[j]


例如:对于i=0,j=0,您说的是
array[0]array[0][0]
,但您确实想要
array[0][0][0]
array[0]array[0]
不是有效语法(
array[0][array[0]]][0]
是,但它不是正确的引用)。

您需要一个对象数组,如下所示:

    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++){
        obj.push({});
        for(var j = 0; j < array[i].length; j++){    
            obj[obj.length - 1][array[i][j][0]] = array[i][j][1];
        }    
    }    
    return obj;    
}   
var obj = transformEmployeeData(array);
var result = JSON.stringify(obj);
console.log(result);
obj[array[i]array[j][0]=obj[array[i]array[j][1]]的原因不起作用有两个原因:

1) 您希望从
array
而不是从
obj
分配给新对象,因为该对象尚不存在

2)
array[i]array[j][0]
不是对数组的有效引用。您只想使用
[j]


例如:对于i=0,j=0,您说的是
array[0]array[0][0]
,但您确实想要
array[0][0][0]
array[0]array[0]
不是有效的语法(
array[0][array[0]][0]
是,但它不是正确的引用)。

一种简单的方法是使用map创建对象数组,并使用forEach分配每个名称/值对

var数组=[
[
['firstName','Joe'],
['lastName','Blow'],
[‘年龄’,42],
[‘角色’、‘职员’]
],
[
['firstName','Mary'],
['lastName','Jenkins'],
[‘年龄’,36],
[‘角色’、‘经理’]
]
]
函数transformEmployeeData(数组){
返回array.map(a=>{
var obj={};
a、 forEach(a=>obj[a[0]]=a[1]);
返回obj;
});
}
var结果=transformEmployeeData(数组);
console.log(结果[0]);

console.log(结果[1])一种简单的方法是使用map创建对象数组,并使用forEach分配每个名称/值对

var数组=[
[
['firstName','Joe'],
['lastName','Blow'],
[‘年龄’,42],
[‘角色’、‘职员’]
],
[
['firstName','Mary'],
['lastName','Jenkins'],
[‘年龄’,36],
[‘角色’、‘经理’]
]
]
函数transformEmployeeData(数组){
返回array.map(a=>{
var obj={};
a、 forEach(a=>obj[a[0]]=a[1]);
返回obj;
});
}
var结果=transformEmployeeData(数组);
console.log(结果[0]);

console.log(结果[1])谢谢尼娜,你能解释为什么我不需要写数组[j]?你得到了一个未命名的数组,而不是一个变量。谢谢尼娜,你能解释为什么我不需要写数组[j]?你得到了一个未命名的数组,而不是一个变量。似乎是@Redu的完全副本-同意。看起来可能是家庭作业。似乎是@Redu-的完全复制品。看起来可能是家庭作业。