问题描述
这可能是一个简单的修复,但是当我在 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)
)
我做错了什么?
elementsToSwap
和 prev
都是数组。
解决方法
当三个条件都为假时,您想使用 ||
运算符来中断循环。
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
。