Ich spiele mit Typescript und frage mich, wie man mehrdimensionale Arrays richtig instanziiert und deklariert. Hier ist mein Code:
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 ???
}
}
}
}
Können Sie mir einen Hinweis zu ausgewählten Orten geben?
this.things = [];
im Konstruktor sein.Wenn Sie es tun möchten, tippen Sie:
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); } } }
quelle
Hier ist ein Beispiel für die Initialisierung eines Booleschen [] []:
const n = 8; // or some dynamic value const palindrome: boolean[][] = new Array(n) .fill(false) .map(() => new Array(n) .fill(false));
quelle
Sie können Folgendes tun (was ich trivial finde, aber es ist tatsächlich richtig). Für alle, die versuchen, ein zweidimensionales Array in TypeScript zu initialisieren (wie ich).
Angenommen, Sie möchten ein zweidimensionales Array eines beliebigen Typs initialisieren. Sie können Folgendes tun
const myArray: any[][] = [];
Und später, wenn Sie es füllen möchten, können Sie Folgendes tun:
myArray.push([<your value goes here>]);
Ein kurzes Beispiel für das Obige kann das Folgende sein:
const myArray: string[][] = [];
myArray.push(["value1", "value2"]);
quelle
Achten Sie auf die Verwendung der Push-Methode. Wenn Sie keine Indizes verwenden, funktioniert dies nicht!
var main2dArray: Things[][] = [] main2dArray.push(someTmp1dArray) main2dArray.push(someOtherTmp1dArray)
gibt nur ein 1-Zeilen-Array !
verwenden
main2dArray[0] = someTmp1dArray main2dArray[1] = someOtherTmp1dArray
damit dein 2d Array funktioniert !!!
Andere Vorsicht! foreach scheint nicht mit 2D-Arrays zu funktionieren !
quelle