我可以在javascript中将整个数组插入其他数组位置吗?

时间:2012-10-31 12:44:14

标签: javascript arrays dynamic-arrays

我有一个名为 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 (?)

3 个答案:

答案 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]
]

因为这里的其他一些答案会导致。