2016-06-17 32 views
0

鉴于这种代码:嵌套多维阵列在Javascript

<script type="text/javascript"> 
    var arr = []; 
    var names = [{name : 'George'}, {name : 'Ringo'}, {name : 'Paul'}, {name : 'John'}]; 
    var surnames = [{surname : 'Harrison'}, {surname : 'Starr'}, {surname : 'McCartney'}, {surname : 'Lennon'}]; 

    for (i = 0; i < names.length; i++) { 
      arr['firstname'] = names[i]; 
     for (j = 0; j < surnames.length; j++) { 
      arr['firstname']['surname'] = surnames[j]; 
      arr['firstname']['surname']['index'] = i; 
      console.log(arr); 
     } 
    } 
</script> 

运行时,在内部循环输出只会显示姓氏阵列(侬)和i(3)上的所有条目的最后一个值。我想达到的输出是为每个姓氏,姓氏将分配给所有的名字(如约翰哈里森,约翰斯塔尔等)和指数(我)将从0增加到3.谢谢。

+0

什么是预期outpu t? – Rayon

+0

JavaScript中没有关联数组,因此您不能将任何内容存储到'arr ['firstname']'中。 – Dellirium

+0

@Dellirium,OP可以使用他的代码存储数据:如果使用命名索引,JavaScript将重新定义数组为标准对象。 –

回答

0

貌似要与姓氏的所有名字的笛卡尔乘积。

试试这个

var arr = []; 
 
var names = [{ 
 
    name: 'George' 
 
}, { 
 
    name: 'Ringo' 
 
}, { 
 
    name: 'Paul' 
 
}, { 
 
    name: 'John' 
 
}]; 
 
var surnames = [{ 
 
    surname: 'Harrison' 
 
}, { 
 
    surname: 'Starr' 
 
}, { 
 
    surname: 'McCartney' 
 
}, { 
 
    surname: 'Lennon' 
 
}]; 
 

 
for (i = 0; i < names.length; i++) 
 
{ 
 
    for (j = 0; j < surnames.length; j++) 
 
    { 
 
    var tmpObj = JSON.parse(JSON.stringify(names[i])); 
 
    tmpObj['surname'] = surnames[j].surname; 
 
    tmpObj['index'] = i; 
 
    arr.push(tmpObj); 
 
    } 
 
} 
 
console.log(arr);

或者你也可以做

Object.create(names[i]) 

,而不是

JSON.parse(JSON.stringify(names[i])); 
+0

你检查了你自己的代码吗?你将所有的名字和姓氏组合在一起。 – Craicerjack

+0

@Craicerjack是的,这是我虽然OP要求。 – gurvinder372

+1

@Craicerjack OP说'姓氏将分配给所有的名字' – gurvinder372

1

你想要这样的东西吗?

var arr = []; 
 
var names = [{ 
 
    name: 'George' 
 
}, { 
 
    name: 'Ringo' 
 
}, { 
 
    name: 'Paul' 
 
}, { 
 
    name: 'John' 
 
}]; 
 
var surnames = [{ 
 
    surname: 'Harrison' 
 
}, { 
 
    surname: 'Starr' 
 
}, { 
 
    surname: 'McCartney' 
 
}, { 
 
    surname: 'Lennon' 
 
}]; 
 

 
for (i = 0; i < names.length; i++) { 
 
    arr.push({ 
 
     index: i, 
 
     firstname: names[i].name, 
 
     surname: surnames[i].surname 
 
    }); 
 
    } 
 
    console.log(arr);

1

尝试这样,

for (i = 0; i < names.length; i++) { 
     var obj = new Object; 
     obj['name'] = names[i]; 
     obj['name']['surname'] = surnames[i].surname; 
     obj['index'] = i; 
     arr.push(obj); 

} 
    console.log(arr); 
+0

'arr ['firstname']'不是拥有密钥的对象! – Rayon

+0

答案更新, –