簡體   English   中英

JavaScript Battleship陣列接頭

[英]JavaScript Battleship Array splice

我正在用JavaScript制作戰艦游戲,卻偶然發現一個問題

    var targetString = target.replace(/\s+/g, '');
    for(var i = 0; i !== inputArray.length; i++) {
        for(var j = 0; j !== boats[i].usedPositions.length; j++) {
            if(targetString === boats[i].usedPositions[j].toString()) {
                hit = true;
                boats[i].hits[j] = 1;
                console.log(boats[i].hits);
                currentBoat = boats[i];
                boats[i].usedPositions.splice(j,1);
                break;
            }                                
        }  
    }

    if(hit && stop == false) {
        alert ("Hit!");
        if(allEquals(currentBoat.hits, 1) && hit) {
            alert("Boat with length " + currentBoat.hits.length + " has sunken!");
            sunkenBoat++;
        }
    }

第一段代碼檢查輸入的坐標是否與船的坐標匹配(所有這些都存儲在usedPositions中)。 為了防止玩家再次擊中該船,我想使用拼接將擊中的coordiante從該陣列中取出。 但是,當我這樣做時,它不會在船下沉時提醒我(第二段代碼)。 刪除帶有接頭的線時,它會發出警報。 誰能幫我? 完整的代碼可以在這里找到。

splice將隨后的數組元素向下移動以填充空間。 您的邏輯看起來並不像預期的那樣。

除了splice ,您可能只想向該數組位置分配其他值,例如:

boats[i].usedPositions[j] = " "; // Where " " is assumed not to represent a boat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM