动态添加元素到二维数组

时间:2013-12-20 21:59:24

标签: javascript arrays multidimensional-array

我想知道如何创建一个数组,并使用嵌套的for循环向其中添加元素。我如何声明数组? 我希望完成的数组看起来像这样:

var array2d = {
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
};

我不想将内部数组格式化为对象。我想要一个简单的数组,我可以这样访问:

var element = array2d[2][1]; //returns '1'

1 个答案:

答案 0 :(得分:1)

John Hartsock可能的意思(在他的answer中)是:

var my2DArray = [], i, j;

for(i = 0; i < 5; i++){
  my2DArray.push([]);
  for(j = 0; j < 5; j++){
    my2DArray[i].push("Array Position " + i + ", " + j);
  }
}

alert(my2DArray[0][0]); //will alert "Array Postion 0, 0"
alert(my2DArray[1][4]); //will alert "Array Postion 1, 4"

工作jsfiddle demo here

OR 使用临时参考到每个新的“子阵列”(可以更快):

var my2DArray = [], i, j, tempRef;

for(i = 0; i < 5; i++){
  tempRef = my2DArray[i] = [];
  for(j = 0; j < 5; j++){
    tempRef.push("Array Position " + i + ", " + j);
  } 
}

alert(my2DArray[0][0]); //will alert "Array Postion 0, 0"
alert(my2DArray[1][4]); //will alert "Array Postion 1, 4"

工作jsfiddle demo here

说明:

通常使用var arr=[];来创建数组,使用arr.push(/*content*/);将新数组项添加到数组的末尾(因此它与arr[arr.length]=/*content*/;基本相同)。 / p>

因此,如果您有一个数组(my2DArray),那么您添加 new 数组(因为数组通过引用传递,而不是复制)到您的主/根数组:{{ 1}}让my2DArray.push([]);引用这个新数组(一旦这个数组存在,你就可以用它来做事:my2DArray[my2DArray.length])。

所以,假设你只有一个循环,那么你也可以通过一次推送添加一个完整的新数组:my2DArray[index][sub_index]

换句话说,(使用上面解释的内容),这一行将创建完全你在问题​​中给出的2d数组:

my2DArray.push([0,1,2,3]);

jsfiddle demo here

顺便说一句,从技术上来说,javascript中甚至没有数组,只是具有一些特殊功能的花哨对象(这里的优秀解释https://stackoverflow.com/a/2891043/588079