繁体   English   中英

尝试从数组访问元素时Javascript错误

[英]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.ceilMath.floor来获取最接近的整数。 然后它应该工作。

x/10将产生一个浮点数。 x1 ,它将为0.1 0.1 grid中没有索引,因此结果undefined 这就是为什么您会收到该错误。

您可以根据要执行的操作使用Math.floorparseInt

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM