【问题标题】:Typescript - initialize a 2D array ERROR打字稿 - 初始化二维数组错误
【发布时间】:2017-11-16 08:36:31
【问题描述】:

我正在尝试为 [[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;
    }
}

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

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] = [];

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

【问题讨论】:

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

标签: arrays typescript multidimensional-array


【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      相关资源
      最近更新 更多