尝试从数组

时间:2015-07-29 17:36:11

标签: javascript

我正在开发一个MineSweeper程序,这是我的问题:

所以我制作了一个10x10网格,里面装满了我之前定义的MineSquare对象。

var grid = [];
    for (var i=0; i<10; i++){
        grid.push([]);
        for (var j=0; j<10; j++){
            grid[i].push(new MineSquare())
        }
    }

然后我创建一个数组“bomb_list”来创建20个炸弹所在的独特位置。

var bomb_list = [];
var found;
var rand;
while (bomb_list.length < 20){
    found = false;
    rand = Math.floor(Math.random() * 100);
    for (var i=0; i<bomb_list.length; i++){
        if (bomb_list[i] === rand){found=true; break;}
    }
    if(!found){
        bomb_list.push(rand);
    }
}

然后我尝试更改那些MineSquare的值以表明它们是炸弹。

for(var x in bomb_list){
    grid[ x / 10 ][ x % 10 ].touching = -1;
}

我收到一条错误,上面写着“Uncaught TypeError:无法读取未定义的属性'1'”,我认为这是因为当我尝试取格[x / 10]时会造成这种错误。

出现这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

X/10将为您提供浮点值,应使用Math.ceilMath.floor根据您的逻辑获取最近的int。然后它应该工作。

答案 1 :(得分:1)

x/10会生成一个浮点数。当x1时,它将为0.1grid的{​​{1}}中没有索引,因此结果为0.1。这就是你得到这个错误的原因。

您可以undefinedMath.floor取决于您的目标:

parseInt