尽管不满足条件,Do-While 循环仍会中断

Do-While loop breaks despite not fulfilling conditions

这可能是一个简单的修复,但是当我 运行 r1 和 r2 下面的循环有时不满足中断循环的条件但循环仍然中断并且 returns 值。例如,即使 Math.abs(r1-r2)<3

循环也会中断
  let r1
  let r2
  do{
    r1 = Math.round(Math.random()*(elementsToSwap.length-1))
    r2 = Math.round(Math.random()*(elementsToSwap.length-1))
  }while(
    (Math.abs(r1-r2)<3)
    &&prev.includes(r1)
    &&prev.includes(r2)
  )

我做错了什么?

elementsToSwapprev 都是数组。

您想在所有三个条件都为假时使用 || 运算符来中断循环。

let r1;
let r2;
do {
    r1 = Math.round(Math.random()*(elementsToSwap.length-1))
    r2 = Math.round(Math.random()*(elementsToSwap.length-1))
} while((Math.abs(r1-r2)<3) || prev.includes(r1) || prev.includes(r2))

OR || 当所有三个都是 false.

时将 A || B || C 计算为 false

AND &&A && B && C 计算为 false 当偶数为 false.