二维Javascript数组无法填充duel for循环
我正在编写一个需要使用Javascript二维数组的程序,所以我构建了这个测试平台来尝试向数组中添加值 如您所见,如果检查输出,循环将运行内部循环两次,然后停止,外部循环要求运行二维Javascript数组无法填充duel for循环,javascript,for-loop,multidimensional-array,getelementbyid,Javascript,For Loop,Multidimensional Array,Getelementbyid,我正在编写一个需要使用Javascript二维数组的程序,所以我构建了这个测试平台来尝试向数组中添加值 如您所见,如果检查输出,循环将运行内部循环两次,然后停止,外部循环要求运行10次 谁能解释我做错了什么 HTML: 外部数组(按x索引)只有一个成员(单个数组)。试试这个: function arrayTest(input){ var array = []; var obj = document.getElementById(input); obj.value=""; var
10次
谁能解释我做错了什么
HTML:
外部数组(按x
索引)只有一个成员(单个数组)。试试这个:
function arrayTest(input){
var array = [];
var obj = document.getElementById(input);
obj.value="";
var x = 0, y = 0;
for (x = 0; x < 10; x++)
{
array[x] = [];
for (y = 0; y < 2; y++)
{
array[x][y] = "Hello World, x='" + x + "', y='" + y + "'\n";
obj.value+=array[x][y];
}
}
}
函数数组测试(输入){
var数组=[];
var obj=document.getElementById(输入);
obj.value=“”;
变量x=0,y=0;
对于(x=0;x<10;x++)
{
数组[x]=[];
对于(y=0;y<2;y++)
{
数组[x][y]=“你好,世界,x=”“+x+”,y=”“+y+”\n”;
对象值+=数组[x][y];
}
}
}
这很有效,谢谢。你能解释一下发生了什么事吗?我不太明白。是否array[x]=[]代码>将数组添加到x
?我认为初始化vararray=newarray(newarray())
将足以在每个x
中放入一个数组。它没有点击(当你创建一个二维数组时,你实际上是在创建一个数组数组。当你做var-array=new-array(new-array());
时,你真正要做的就是var-array=[[]];
。所以你只有一个内部数组,而每个x
确实需要一个。所以当我们做array[x]=[];
,我们为每个x
创建一个新的内部数组,这就是我们想要的。这有意义吗?这真的很有趣,所以额外的new array()
是多余的?因为我们根据您的建议在外部循环中添加了一个新数组,我们不再需要它:var array=new array(new array());
相反,我只需要初始化它:var-array=new-array();
这就是为什么我将它改为justvar-array=[];
。就个人而言,我更喜欢数组文字而不是new-array()
,因为它更干净,并且类似于许多其他语言的数组语法。
function primaryCommand(input){
arrayTest(input);
}
function arrayTest(input){
// How large can an array be and still be safe?
var array = new Array(new Array());
var obj = document.getElementById(input);
obj.value="";
var x = 0, y = 0;
for (x = 0; x < 10; x++)
{
for (y = 0; y < 2; y++)
{
array[x][y] = "Hello World, x='" + x + "', y='" + y + "'\n";
obj.value+=array[x][y];
}
}
}
Hello World, x='0', y='0'
Hello World, x='0', y='1'
function arrayTest(input){
var array = [];
var obj = document.getElementById(input);
obj.value="";
var x = 0, y = 0;
for (x = 0; x < 10; x++)
{
array[x] = [];
for (y = 0; y < 2; y++)
{
array[x][y] = "Hello World, x='" + x + "', y='" + y + "'\n";
obj.value+=array[x][y];
}
}
}