2017-06-14 208 views
0

我正在尝试为[[x_1,y_1,z_1],[x_2,y_2,z_2],[...] ...]等坐标创建二维数组。Typescript - 初始化二维数组错误

这里是我的初始化和初始声明代码:

var ALLcoordinates:number[][]; 

for (var i=0; i< dims; i++) { 
    ALLcoordinates[i]=[]; 
    for (var j=0; j<chainSize; j++){ 
     ALLcoordinates[i][j]=0; 
    } 
} 

在那之后,我给你新的值在这个循环中的每一行:

for (var i = 0; i < chainSize; i++) { 
    var alea1 = Math.floor(Math.random()*(3-0+1))+0; 
    var alea2 = Math.floor(Math.random()*(3-0+1))+0; 
    var alea3 = Math.floor(Math.random()*(3-0+1))+0; 
    var coordinates:number[]; 
    coordinates = [alea1,alea2,alea3]; 
    ALLcoordinates[i]=coordinates; 

} 

但是,当我编译它,我得到这个错误Uncaught TypeError: Cannot set property '0' of undefined此行ALLcoordinates[i] = [];

我希望得到任何帮助,感谢

+1

这是打字稿或javascript?这不是在打字稿中声明变量的正确方法。 –

回答

1

当你做了var ALLcoordinates:number[][];,你没有用任何值初始化它。你只是指定了它的类型。在运行时它仍然是undefined。所以undefined[0]会引发错误。在使用前初始化它:

var ALLcoordinates: number[][] = []; 
2

声明一个数组并不会初始化它。

你缺少ALLcoordinates初始化:

var ALLcoordinates:number[][]; 

ALLcoordinates = [];   // ◄ initialize the array 

for (var i=0; i< dims; i++) { 
    ALLcoordinates[i]=[]; 
    for (var j=0; j<chainSize; j++){ 
     ALLcoordinates[i][j]=0; 
    } 
}