未捕获的TypeError:无法读取3d数组中未定义的属性“0”

时间:2017-10-02 06:16:46

标签: javascript

以下是我的代码:

        var i,j;
        var period = 5;
        var sec = new Array(new Array(new Array()));
        for(i=0;i<6;i++){
            for(j=1;j<period;j++){  
                sec[j][i][j] = j;
                console.log("SEC: "+j+i+j+" = "+sec[j][i][j]);
                console.log('/n');
            }
        }

当我执行上面的代码时,我无法在sec [j] [i] [j]赋值时读取未定义的属性'0'。 我不明白它背后的原因.. 如果你们可以帮助我,那将是很棒的。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

那是因为sec [1] [0] [1]未定义,你需要每次都按一个数组

&#13;
&#13;
        var i,j, period = 6;
        var sec = [];
        for(i=0;i<6;i++){
            for(j=1;j<period;j++){
                sec[j] = [];
                sec[j][i] = [];
                sec[j][i][j] = j;
                console.log("SEC: "+j+i+j+" = "+sec[j][i][j]);
                console.log('/n');
            }
        }
&#13;
&#13;
&#13;

答案 1 :(得分:1)

var sec = new Array(new Array(new Array()));

不按照您的想法行事。尝试在需要时分配内部数组,而不是

var i, j;
var period = 5;
var sec = [];
for (i = 0; i < 6; i++) {
  for (j = 1; j < period; j++) {
    sec[j] = sec[j] || [];
    sec[j][i] = sec[j][i] || [];
    sec[j][i][j] = j;
    console.log("SEC: " + j + i + j + " = " + sec[j][i][j]);
    console.log('\n');
  }
}

另外,/ n打印'/ n'不是\ n

的新行

答案 2 :(得分:0)

虽然您已将数组声明为3D数组,但JavaScript不会为其分配内存。

因此,3D数组sec [0]未定义。