我有一个2D数组,它绝对不会返回我需要的值。我从这个数组开始:
var userdata:Array = new Array(new Array(1000),new Array(4))
然后,我尝试将所有值设置为0,如下所示:
this.onLoad()
{
for (i = 0; i < 1000; i++)
{
for (j = 0; j < 4; j++)
{
userdata[i][j] = 0
trace(userdata[i][j])
}
}
}
这个跟踪返回80秒,然后是大量的“未定义”。我不知道为什么会这样。我也尝试过这样的方法:
userdata[5][0] = 0
trace(userdata[5][0])
它仍然返回“未定义”。有人能帮忙吗?
发布于 2015-06-22 04:34:16
为了理解为什么只有8个“零”和许多未定义的值,让我们从数组声明开始:
var userdata:Array = new Array(new Array(1000),new Array(4));
在这里,您应该了解,您只创建了一个只有2个单元格的数组(这就是为什么userdata[5][0]
是undefined
):第一个单元格是一个包含1000个元素的数组,第二个单元格是一个由4个元素组成的数组,这就是为什么只能设置8个项(2x4):第一个单元格中的第四个项目+第二个单元格中的第四个元素。
让我们回到您的问题,您希望创建一个由1000行和4列组成的多维数组。首先,我们创建一个由1000行(单元格)组成的数组:
var a:Array = [1000]; // you can write it : new Array(1000);
然后,我们为每一行创建4列,并设置如下值:
var i:Number, j:Number;
for (i = 0; i < 1000; i++)
{
// create the 4 columns
a[i] = [4]; // you can write it : a[i] = new Array(4);
for (j = 0; j < 4; j++)
{
a[i][j] = 0;
}
}
然后我们可以验证我们的数组:
trace(a[0][0]); // gives : 0
trace(a[255][2]); // gives : 0
trace(a[255][5]); // gives : undefined, because we have only 4 columns
trace(a[1500][0]); // gives : undefined, because we have only 1000 rows
希望能帮上忙。
https://stackoverflow.com/questions/30856639
复制相似问题