我有一个名为 arr1 的数组和一个名为 arr2 的第二个数组。两者都是dinamically创建的(我的意思是arr2每次进入一段时间都不同而arr1它是相同的但每次都被arr2新数组填充)。
我希望 arr1 的每个位置都有一个不同的数组(在示例中,arr2始终是相同的,但从不明白),我该怎么做?
我试过这种方式:
//Some context
arr1[x] = new Array();
arr2[y] = new Array();
while(j < 10){
arr2[j] = j;
j++;
}
while(x < 10){
arr1[x] = [arr2]; //problem
x++;
}
arr1[x] = new Array(otherArr.length);
arr1[x] = [arr2] (?)
arr1[x] = arr2 (?)
arr1[x] = new Array(arr2.length)
arr1[x] = arr2 (?)
答案 0 :(得分:3)
for(var i=0; i<arr1.length; i++)
arr1[i] = arr2;
编辑:使用
for(var i=0; i<arr1.length; i++)
arr1[i] = arr2.slice(0);
如果要复制数组而不是使用引用。
答案 1 :(得分:1)
如果array1的长度为&gt; 0然后你可以使用这个方法用array2替换array1中的每个位置。
array1 = ["","",""] array2 = [1,2,3] for (var i=0; i<array1.length; i++) { array1[i] = array2; }
答案 2 :(得分:0)
如果您想使用arr2
作为模板,以便以后对某个“行”的修改不会影响其他人:
var arr1 = [1,2,3];
var arr2 = [4,5,6];
for (var i=arr1.length;i--;) arr1[i] = arr2.concat(); // create a copy
此时你有相当于:
var arr1 = [
[4,5,6],
[4,5,6],
[4,5,6]
];
...这样您就可以更改arr1[0][0] = 0
并查看:
[
[0,5,6],
[4,5,6],
[4,5,6]
]
而不是
[
[0,5,6],
[0,5,6],
[0,5,6]
]
因为这里的其他一些答案会导致。