gpt4 book ai didi

javascript - JS做...而

转载 作者:行者123 更新时间:2023-11-29 14:47:41 24 4
gpt4 key购买 nike

在我看来,我误解了 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。为什么?我认为它会像这样工作:

  1. 从数组a中滚动随机元素,将其存储到c并将c推送到b;<
  2. 检查(c===4)是否为true
  3. 如果是——转到第 1 段;
  4. 如果不是 — 将 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?

关于javascript - JS做...而,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com