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

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

原文由 Fka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

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

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

至于第二级,如果 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();
            }
        }
    }
}

原文由 Puppy 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

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

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

上面的一个简短示例如下:

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

原文由 geocfu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进