Typescript - 多维数组初始化

时间:2015-05-09 20:18:26

标签: multidimensional-array typescript

我正在使用Typescript,我想知道如何正确实例化和声明多维数组。这是我的代码:

class Something {
    private things: Thing[][];

    constructor() {
        things = [][]; ??? how instantiate object ???

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = new Thing[];   ??? how instantiate 1st level ???
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();   ??? how instantiate 2nd lvl item ???
            }
        }
    }
}

你能否给我一些关于选定地点的提示?

5 个答案:

答案 0 :(得分:74)

您只需要[]来实例化一个数组 - 无论其类型如何都是如此。数组属于数组类型的事实并不重要。

同样的事情适用于循环的第一级。它只是一个数组而[]是一个新的空数组 - 完成了工作。

至于第二级,如果Thing是一个类,那么new Thing()就可以了。否则,根据类型,您可能需要工厂函数或其他表达式来创建一个。

class Something {
    private things: Thing[][];

    constructor() {
        this.things = [];

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = [];
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();
            }
        }
    }
}

答案 1 :(得分:7)

如果你想这样做,请输入:

class Something {

  areas: Area[][];

  constructor() {
    this.areas = new Array<Array<Area>>();
    for (let y = 0; y <= 100; y++) {
      let row:Area[]  = new Array<Area>();      
      for (let x = 0; x <=100; x++){
        row.push(new Area(x, y));
      }
      this.areas.push(row);
    }
  }
}

答案 2 :(得分:1)

以下是初始化boolean [] []的示例:

const n = 8; // or some dynamic value
const palindrome: boolean[][] = new Array(n).fill(false).map(() => new Array(n).fill(false));

答案 3 :(得分:1)

您可以执行以下操作(我认为这很简单,但实际上是正确的)。 对于任何试图找到如何在TypeScript中初始化二维数组的人(如我自己)。

让我们假设您要初始化任何类型的二维数组。您可以执行以下操作

const myArray: any[][] = [];

然后,当您要填充它时,可以执行以下操作:

myArray.push([<your value goes here>]);

上述内容的简短示例如下:

const myArray: string[][] = [];
myArray.push(["value1", "value2"]);

答案 4 :(得分:-2)

提防使用push方法,如果不使用索引,它将无法正常工作!

var main2dArray: Things[][] = []

main2dArray.push(someTmp1dArray)
main2dArray.push(someOtherTmp1dArray)

仅提供1行数组

使用

main2dArray[0] = someTmp1dArray
main2dArray[1] = someOtherTmp1dArray

使二维阵列正常工作 !!!

其他要当心! foreach不适用于2d阵列!