1

所以,我在 JavaScript 中遇到了数组的这个问题。我初始化了一些变量,如下所示:

var world = new Array;
var monsters = new Array;
var items = new Array;
var x = 0;
var y = 0;

并尝试在其上运行此代码:

            while (y <= 49) { //generate world
                world[x][y] = parseInt(Math.floor(Math.random()*2)); //0 = flatland, 1 = desert, 2 = mountain, 3 = swamp
                x++;
                if (x >= 49) {
                    x = 0;
                    y++;
                }
            }
            x = 0;
            y = 0;

但是我在Math.random()行上遇到了这个错误: “TypeError: can't convert undefined to object” 。我已经尝试了我能想到的一切,但它仍然会引发该错误。任何帮助将不胜感激!

4

3 回答 3

3

world[x][y]未初始化。那就是问题所在。您需要在while语句下方进行初始化

while (y <= 49) {
    world[x] = new Array(); //add this
于 2012-10-05T03:48:24.687 回答
1

world[x]不是数组,因此在尝试为 赋值时会出错world[x][y],填充数组的方法对我来说似乎很奇怪,我会这样做

world = [];
for (x = 0; x <= 49; x++) { //generate world
    world[x] = [];
    for (y = 0; y <= 49; y++){
        world[x][y] = parseInt(Math.floor(Math.random()*2)); //0 = flatland, 1 = desert, 2 = mountain, 3 = swamp
    }
}
x = 0;
y = 0;
于 2012-10-05T03:53:02.593 回答
0

你错过了(). World 必须定义为二维数组world[x] = new Array();使用 [] 表示法更方便。

于 2012-10-05T03:45:06.010 回答