我想知道如何创建一个数组,并使用嵌套的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'
答案 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"
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"
说明:
通常使用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]);
顺便说一句,从技术上来说,javascript中甚至没有数组,只是具有一些特殊功能的花哨对象(这里的优秀解释:https://stackoverflow.com/a/2891043/588079)