我是Javascript的新手,我正在尝试创建一个地形生成器。当在2D数组中设置一些值时,这个错误,不能设置属性'4.5'未定义“,这是奇怪的,因为我已经用0初始化了数组。 这就是给我带来麻烦的东西:
this.terrainArr[y + (size - 1) / 2][x + (size - 1) / 2] =
(this.terrainArr[y][x] +
this.terrainArr[y + (size - 1)][x] +
this.terrainArr[y + (size - 1)][x + (size - 1)] +
this.terrainArr[y][x + (size - 1)]) / 4 +
((Math.random() * (delta + 1)) - (delta / 2));
我像这样初始化数组:
this.terrainArr = [];
for(var i = 0; i < this.size; i++) {
var column = [];
for(var j = 0; j < this.size; j++) {
column[j] = 0;
}
this.terrainArr[i] = column;
}
我一个接一个地调用这些函数
this.initArr();
this.calcTerrain(0, 0, this.size, 10);
有人知道发生了什么事吗?
答案 0 :(得分:0)
如果大小是偶数,y +(大小-1)/ 2将不是整数。尝试读取数组的非整数索引将返回undefined;并尝试在undefined上使用索引表示法将引发错误。
例如:
myArray[2.5][4.5] // this is equivalent to undefined[4.5] which will throw