Typescript - 多维数组初始化
Posted
技术标签:
【中文标题】Typescript - 多维数组初始化【英文标题】:Typescript - multidimensional array initialization 【发布时间】:2015-07-20 14:16:06 【问题描述】:我正在玩 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 ???
你能给我一些关于选定地点的提示吗?
【问题讨论】:
【参考方案1】:你只需要[]
来实例化一个数组——不管它的类型如何,这都是真的。数组是数组类型这一事实无关紧要。
同样的事情也适用于循环的第一级。它只是一个数组,[]
是一个新的空数组 - 工作完成。
至于第二级,如果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();
【讨论】:
我无法想象,打字是如何保存在这里的。请给我一些例子好吗? 数组中有 0 项,因此没有要输入的值或对象。 我猜,构造函数中应该是this.things = [];
。【参考方案2】:
如果你想输入:
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);
【讨论】:
谢谢,但并不是每个人都在使用 AngularJs 编写 JS/TS 代码。 这只是标准的 TS 代码,对吧?你认为 AngularJs 是什么?我更喜欢这种带有类型的解决方案。谢谢 @WhatWouldBeCool 已编辑答案以删除 AngularJs 特定代码【参考方案3】:注意push方式的使用,不使用索引就不行!
var main2dArray: Things[][] = []
main2dArray.push(someTmp1dArray)
main2dArray.push(someOtherTmp1dArray)
只给出一个 1 行数组!
使用
main2dArray[0] = someTmp1dArray
main2dArray[1] = someOtherTmp1dArray
让您的二维数组正常工作!!!
其他注意! foreach 似乎不适用于 2d 数组!
【讨论】:
【参考方案4】:这里是一个初始化boolean[][]
的例子:
const n = 8; // or some dynamic value
const palindrome: boolean[][] = new Array(n)
.fill(false)
.map(() =>
new Array(n).fill(false)
);
【讨论】:
【参考方案5】:您可以执行以下操作(我觉得这很简单,但实际上是正确的)。 对于任何试图找到如何在 TypeScript 中初始化二维数组的人(比如我自己)。
假设您要初始化任何类型的二维数组。您可以执行以下操作
const myArray: any[][] = [];
稍后,当您想要填充它时,您可以执行以下操作:
myArray.push([<your value goes here>]);
上面的一个简短示例如下:
const myArray: string[][] = [];
myArray.push(["value1", "value2"]);
【讨论】:
以上是关于Typescript - 多维数组初始化的主要内容,如果未能解决你的问题,请参考以下文章