以下是我的代码:
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'。 我不明白它背后的原因.. 如果你们可以帮助我,那将是很棒的。 提前谢谢。
答案 0 :(得分:4)
那是因为sec [1] [0] [1]未定义,你需要每次都按一个数组
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;
答案 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]未定义。