[英]Error in Javascript while trying to access element from array
我正在开发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;
}
我收到一个错误消息,提示“未捕获的TypeError:无法读取未定义的属性'1'”,我认为是在尝试获取grid [x / 10]时引起的。
为什么会这样呢?
X/10
将为您提供一个浮点值,应根据您的逻辑使用Math.ceil
或Math.floor
来获取最接近的整数。 然后它应该工作。
x/10
将产生一个浮点数。 当x
为1
,它将为0.1
。 0.1
grid
中没有索引,因此结果undefined
。 这就是为什么您会收到该错误。
您可以根据要执行的操作使用Math.floor
或parseInt
:
for(var x in bomb_list){
grid[ parseInt(x / 10) ][ x % 10 ].touching = -1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.