2017-06-14 555 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; 
    } 
}