打字稿 - 初始化二维数组错误

Oxa*_*ova 4 arrays multidimensional-array typescript

我正在尝试为 [[x_1,y_1,z_1], [x_2,y_2,z_2], [...],...] 等坐标创建一个二维数组。

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

var ALLcoordinates:number[][];

for (var i=0; i< dims; i++) {
    ALLcoordinates[i]=[];
    for (var j=0; j<chainSize; j++){
        ALLcoordinates[i][j]=0;
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,我为此循环中的每一行分配新值:

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;

}
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,Uncaught TypeError: Cannot set property '0' of undefined这一行出现了这个错误 ALLcoordinates[i] = [];

我将不胜感激任何帮助,谢谢

Sar*_*ana 6

当你这样做时var ALLcoordinates:number[][];,你没有用任何值初始化它。您刚刚指定了它的类型。它仍然会undefined在运行时。所以undefined[0]抛出错误。使用前先初始化:

var ALLcoordinates: number[][] = [];
Run Code Online (Sandbox Code Playgroud)


Kob*_*uek 5

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

您缺少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;
    }
}
Run Code Online (Sandbox Code Playgroud)