我想声明一个4维的数组,然后用for()
循环一些内容-然后程序中断。这是我的代码:
打字稿:
MoarInfo: any = [[[[]]]];
JavaScript:
constructor(){
for(var i = 0; i < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth].length; i++){
for(var a = 0; a < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i].length; a++){
for(var b = 0; b < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a].length; b++){
this.MoarInfo[i][a][b][0] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][0];
this.MoarInfo[i][a][b][1] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][1];
this.MoarInfo[i][a][b][2] = 'DetailsSpan';
}
}
}
}
该问题肯定在MoarInfo[][][][]
数组中。我在没有它的情况下测试了我的代码,并且工作正常。我也尝试了Typescript数组声明的以下可能性:
Moarinfo: any[]; MoarInfo = []; MoarInfo = [[[[]]]]; MoarInfo: any[][][][] = [[[[]]]];
然后在JavaScript中,我尝试声明一个新的Array,然后将MoarInfo
数组中的某些元素推入,它们具有不同的功能(拆分,取消移位,推入,连接),并且没有任何作用。
我在做什么错了?
答案 0 :(得分:1)
检查this.MoarInfo[i][a][b]
的大小。您正在尝试通过索引0,1,2获取值。看起来它的大小小于2,这会导致此错误。
if(this.MoarInfo[i][a][b].size > 0){
this.MoarInfo[i][a][b][0] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][0];
}
if(this.MoarInfo[i][a][b].size > 1){
this.MoarInfo[i][a][b][1] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][1];
}
if(this.MoarInfo[i][a][b].size > 2){
this.MoarInfo[i][a][b][2] = 'DetailsSpan';
}
答案 1 :(得分:0)
好的,我自己解决了。首先必须将elements
中的dimensions
中的array
设置为空白,然后才能用内容填充它们。首先,我像这样的Array
在TypeScript
中声明了一个AnArray = [];
。然后,我切换到JavaScript
(转到constructer()
函数),并用空白elements
填充它。我用this.AnArray.push();
将其存档。如果要为第一个elements
设置dimension
,请使用push([]);
,如果要为第四个element
设置dimension
,请使用push([[[]]]);
。您可以像这样push([[['E1',0,0,'E2']]]);
来设置内容空间。现在,您可以使用以下语法:
alert( this.AnArray[0][0][0][3] ); //returns 'E2'
我项目中的完整代码现在可以正常工作,并且看起来像这样:
for(var i = 0; i < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth].length; i++){
this.test.push([[[]]]);
for(var a = 0; a < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i].length; a++){
this.test[i].push([[]]);
for(var b = 0; b < this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a].length; b++){
this.test[i][a].push(['',0,'']);
this.test[i][a][b][0] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][0];
this.test[i][a][b][1] = this.AllDataInfo[this.KontoAktuellYearIndex][this.KontoAktuellMonth][i][a][b][1];
this.test[i][a][b][2] = 'DetailsSpan';
}
}
}
我想知道是否有比使用数组更好的方法,但是如果您也想这样做,可以这样做。