簡體   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