2017-06-14 10 views
0

[[x_1、y_1、z_1]、[x_2、y_2、z_2]、[...]、...]のような座標の2D配列を作成しようとしています。Typescript - 2D配列の初期化エラー

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

は、このtypescriptですかjavascriptのですか?これは、typescriptで変数を宣言する正しい方法ではありません。 –

答えて

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; 
    } 
}