我正在开发一个项目,并在 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 语句,它工作得很好,所以我真的不知道问题是什么
添加一个计数器来跟踪迭代,如果超过合理数量则中断,表明潜在的无限循环:
let iterationCount = 0;
const maxIterations = 1000; // arbitrary large number
do {
// existing code...
iterationCount++;
if (iterationCount > maxIterations) {
throw new Error("Infinite loop detected");
}
} while (!validPos);