Typescript - inisialisasi array 2D ERROR


Saya sedang mencoba membuat array 2D untuk koordinat seperti [[x_1,y_1,z_1], [x_2,y_2,z_2], [...],...].

Berikut adalah kode saya untuk inisialisasi dan deklarasi awal:

var ALLcoordinates:number[][];

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

Setelah itu, saya menetapkan nilai baru untuk setiap baris dalam loop ini :

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;

}

Tapi ketika saya mengompilasinya, saya mendapatkan error ini Uncaught TypeError: Cannot set property '0' of undefined untuk baris ini ALLcoordinates[i]=[];

Saya akan menghargai bantuan apa pun, terima kasih

Jawaban #1

Mendeklarasikan sebuah array tidak menginisialisasinya.

Anda melewatkan inisialisasi 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;
    }
}

Jawaban #2

Saat Anda menulis var ALLcoordinates:number[][];, Anda tidak menginisialisasinya dengan nilai apa pun. Anda hanya menentukan tipenya. Itu masih akan undefined saat runtime. Jadi undefined[0] menimbulkan kesalahan. Inisialisasilah sebelum menggunakannya:

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

Artikel terkait