为什么在javascript中填充2D数组失败



我想填充一个二维数组,我在javascript中有以下代码:

n=2; //rows
m=3; //columns
z=0;
array1=[];
for(i=0;i<n;i++){
    for(j=0;j<m;j++){
        array1[i]=[];
        array1[i][j] = z;
        console.log(i+","+j+"="+z); //debug
        z++;
    }
}
console.log(array1);

但没有得到这个预期的结果;

[[0, 1, 2], [3, 4, 5]]

我得到:

[[undefined, undefined, 2], [undefined, undefined, 5]]

为什么!?我不明白为什么我对每个"内部"数组中的所有项目都未定义,除了最后一个是正确的(这里是 2 和 5)。

我做了一个调试步骤,记录每个i,j对和分配的z值,每次(i,j=z)时我都会得到正确的对值:

0,0=0
0,1=1
0,2=2
1,0=3
1,1=4
1,2=5

所以,我认为我每次都使用 arr[i][j]=z 正确填充数组,那么为什么在这些情况下它未定义呢?在这两种情况下,我还尝试使用 arr=new Array() 而不是arr=[]语法,但结果相同。

有什么想法吗?我几乎可以肯定这将是一个微不足道的错误,但我找不到问题所在!

谢谢。

您在每次循环迭代中重新初始化空数组:

array1[i]=[];

当您只应该为每个值执行此操作一次时 i .将初始化移出最内层循环。

这是应该如何

n=2; //rows
m=3; //columns
z=0;
array1=[];
for(i=0;i<n;i++){
    array1[i]=[];
    for(j=0;j<m;j++){
        array1[i].push(z); // Here is my change
        console.log(i+","+j+"="+z); //debug
        z++;
    }
}

相关内容

  • 没有找到相关文章

最新更新