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

时间:2021-02-25 16:32:16

标签: javascript random do-while boolean-logic

这可能是一个简单的修复,但是当我在 r1 和 r2 下运行循环时,有时不满足中断循环的条件,但循环仍然中断并返回值。例如,即使 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 都是数组。

1 个答案:

答案 0 :(得分:1)

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

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 ||A || B || C 计算为 false,当所有三个都是 false 时。

AND &&A && B && C 计算为 false,即使是 false