0

我有一个名为arr1的数组和一个名为arr2的第二个数组。两者都是动态创建的(我的意思是 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 (?)
4

3 回答 3

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); 如果要复制数组而不是使用引用,请使用。

于 2012-10-31T12:49:39.943 回答
1

如果 array1 的长度 > 0,那么您可以使用此方法将 array1 中的每个位置替换为 array2。

array1 = ["","",""]
array2 = [1,2,3]

for (var i=0; i<array1.length; i++)
  {
  array1[i] = array2;
  }
于 2012-10-31T12:49:38.747 回答
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]
]

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

于 2012-10-31T12:56:44.380 回答