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

Die*_*oDD 0 javascript arrays multidimensional-array

我想填写一个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);
Run Code Online (Sandbox Code Playgroud)

但不是得到这个预期的结果;

[[0, 1, 2], [3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

我明白了:

[[undefined, undefined, 2], [undefined, undefined, 5]]
Run Code Online (Sandbox Code Playgroud)

为什么!?我不明白为什么我对每个"内部"数组中的所有项目都没有定义,除了最后一个正确的(这里是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
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Int*_*ang 7

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

array1[i]=[];
Run Code Online (Sandbox Code Playgroud)

当你应该只为每个值做一次i.将初始化移出最内层循环.