在我看来,我误会了JS中do ... while循环的行为。假设我们有一个类似的代码:
var a = [1,2,3,4,5];
var b = [];
var c;
do {c = a[Math.floor(Math.random()*a.length)];
b.push(c);}
while(c===4);
console.log(b);
a
如果该项目不是,则打算从数组中推出随机项目4
。但是如果我们滚动几次,我们会看到它实际上并没有阻止4
进入数组b
。为什么?我认为它会像这样工作:
a
,存储c
并推c
入b
;(c===4)
是true
;b
到控制台。我在哪里出错,为什么这段代码会以这种方式起作用?如果这种方法无济于事,还有什么其他方法可以“禁止”数组中的某些项目随机滚动(过滤数组除外)?
边跑边做,然后检查。因此它将从A获得一个随机数,将其存储在C中并将其推入B,然后,如果C为4,它将进行另一个循环。
因此,如果C为4,它将仍然将其推至B,之后便不再继续。
您可以这样做:
var a = [1,2,3,4,5];
var b = [];
var c = a[Math.floor(Math.random()*a.length)];
while (c !== 4) {
b.push(c);
c = a[Math.floor(Math.random()*a.length)];
}
console.log(b);
我认为这就是您要尝试的做法?连续将随机项从A推入B,除非得到结果4,在这种情况下,请退出并转到console.log?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句