我正在开发一个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]时会造成这种错误。
出现这种情况的原因是什么?
答案 0 :(得分:1)
X/10
将为您提供浮点值,应使用Math.ceil
或Math.floor
根据您的逻辑获取最近的int。然后它应该工作。
答案 1 :(得分:1)
x/10
会生成一个浮点数。当x
为1
时,它将为0.1
。 grid
的{{1}}中没有索引,因此结果为0.1
。这就是你得到这个错误的原因。
您可以undefined
或Math.floor
取决于您的目标:
parseInt