Javascript:错误“无法设置属性'...'未定义”

时间:2016-03-19 22:06:35

标签: javascript arrays matrix syntax-error

我是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);

有人知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

如果大小是偶数,y +(大小-1)/ 2将不是整数。尝试读取数组的非整数索引将返回undefined;并尝试在undefined上使用索引表示法将引发错误。

例如:

myArray[2.5][4.5] // this is equivalent to undefined[4.5] which will throw