Fka*_*Fka 61 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 ???
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以给我任何关于选定地点的提示吗?
Pup*_*ppy 88
您只需要[]实例化一个数组 - 无论其类型如何都是如此.数组是数组类型的事实并不重要.
同样的事情适用于循环中的第一级.它只是一个数组,[]是一个新的空数组 - 完成工作.
至于第二级,如果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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
tec*_*000 13
下面是一个初始化 a 的例子boolean[][]:
const n = 8; // or some dynamic value
const palindrome: boolean[][] = new Array(n)
.fill(false)
.map(() =>
new Array(n).fill(false)
);
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以执行以下操作(我认为这很简单,但实际上是正确的)。对于任何试图找到如何在 TypeScript 中初始化二维数组的人(比如我自己)。
假设您要初始化任何类型的二维数组。您可以执行以下操作
const myArray: any[][] = [];
Run Code Online (Sandbox Code Playgroud)
稍后,当您想要填充它时,可以执行以下操作:
myArray.push([<your value goes here>]);
Run Code Online (Sandbox Code Playgroud)
上述内容的一个简短示例如下:
const myArray: string[][] = [];
myArray.push(["value1", "value2"]);
Run Code Online (Sandbox Code Playgroud)
如果你想这样做,请输入:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90614 次 |
| 最近记录: |