如何阻止此循环崩溃? [已关闭]

问题描述 投票:0回答:1

我正在开发一个项目,并在 for 循环内编写 if 语句。当我尝试控制台记录它们时(console.log(shipPos[i])),对于 e.x 来说,shipPos 一切正常,但是当我执行 if 语句并加载网站时,它只是永远停留在加载状态。

            if(element.pos.length === 0){
                let shipPos = [];
                let validPos;
                do {
                    element.pos = [getRandomInt(9), getRandomInt(9)];
                    validPos = true;

                    for(let i = 0; i < element.length; i++){
                        const [x, y] = [element.pos[0] + i, element.pos[1]];
                        if(element.pos[0] + element.length - 2 >= 9 || element.pos[1] + element.length - 2 >= 9){
                            validPos = false;
                            break;
                        }
                        shipPos.push([x,y]);
                    }
                    for(let i = 0; i < shipPos.length; i++){
                        const [x, y] = [shipPos[i][0], shipPos[i][1]];
                        if(x === 4){ //example if statement 
                            validPos = false;
                        }
                    }
                } while (!validPos); 
            }

我已经删除了 if 语句,它工作得很好,所以我真的不知道问题是什么

javascript loops
1个回答
0
投票

添加一个计数器来跟踪迭代,如果超过合理数量则中断,表明潜在的无限循环:

let iterationCount = 0;
const maxIterations = 1000; // arbitrary large number
do {
    // existing code...
    iterationCount++;
    if (iterationCount > maxIterations) {
        throw new Error("Infinite loop detected");
    }
} while (!validPos);

© www.soinside.com 2019 - 2024. All rights reserved.