XYZ维数组

时间:2015-03-07 18:03:23

标签: javascript

为什么显示数组[7] [0]的代码在应该有值时是否未定义?

var tnotes = [];
var index = 0;

for (var i = 0; i < 14; i++) {
    tnotes[i] = [];
}

var tx = 'B4';
var notes=['B5','A5','G5','F5','E5','D5','C5','B4','A4','G4','F4','E4','D4','C4']
var getNotes = notes.indexOf(tx);

if (getNotes != -1) {
    tnotes[getNotes][index][] = new Array(20)
    tnotes[getNotes][index][0] = tx //B4
    tnotes[getNotes][index][2] = '3sec'
    index++
}
console.log(tnotes[7][0])

1 个答案:

答案 0 :(得分:1)

在定义一个子数组时,您只会遇到语法错误。以下行不正确:

    tnotes[getNotes][index][] = new Array(20)

您正在引入tnotes数组的第三维而不定义

应该是:

 tnotes[getNotes][index] = [];

或者如果你真的需要size参数:

 tnotes[getNotes][index] = new Array(20);

在此之后,tnotes[7][0]不应再为undefined。此外,请帮自己一个忙,并确保你一直使用分号,这是一个很好的做法,可以省去你很多头痛。

更正后的代码:

var tnotes = [];
var index = 0;

for (var i = 0; i < 14; i++) {
    tnotes[i] = [];
}

var tx = 'B4';
var notes = ['B5','A5','G5','F5','E5','D5','C5','B4','A4','G4','F4','E4','D4','C4'];
var getNotes = notes.indexOf(tx);

if (getNotes != -1) {
    tnotes[getNotes][index] = [];
    tnotes[getNotes][index][0] = tx; //B4
    tnotes[getNotes][index][2] = '3sec';
    index++;
}

console.log(tnotes[7][0]);