运行 for 循环序列并且不仅随机停止最后一个元素

时间:2021-05-17 07:51:29

标签: javascript jquery arrays for-loop

嗨,我是 jquery/javascript 的新手,我有一个 for 循环,我需要从 1 到 4 按顺序运行它。但是当“for 循环”停止时,元素应该停止 1,2, 3 或 4(随机)。是否有可能?因为现在我所做的是,它总是停在第 4 点。请帮忙。谢谢..

您可以在此处访问代码:

https://codesandbox.io/s/angry-hodgkin-esr8f?file=/index.html:0-904

这是代码:

<!DOCTYPE html>
<html>
  <head>
    <script
      src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"
      type="text/javascript"
    ></script>
  </head>

  <body style="background: gray;">
    <button id="k">Hello</button>
  </body>
</html>

<script>
  var data = [
    {
      count: "1",
      name: "one"
    },
    {
      count: "2",
      name: "two"
    },
    {
      count: "3",
      name: "three"
    },
    {
      count: "4",
      name: "four"
    }
  ];

  $("#k").click(function () {
    let count = 0;
    const interVal = setInterval(function () {
      for (let i = 0; i < data.length; i++) {
        // loop through the data array
        const _data = data[i];
        setTimeout(function () {
          console.log("data", _data.count);
        }, 50 * i);
      }
      count += 1;
      if (count === 3) clearInterval(interVal);
    }, 600);
  });
</script>

2 个答案:

答案 0 :(得分:2)

我认为最简单的答案是在您感兴趣的范围之间生成一个随机数,并使用该数字作为 for 循环的结尾。您可以使用以下功能:

function getRndInteger(min, max) {
  return Math.floor(Math.random() * (max - min) ) + min;
}

这将返回一个随机整数,其中包含最小值,排除最大值。如果将其添加到代码中,则对 for 循环的调用可能如下所示:

for (let i = 0; i <= getRndInteger(1, 5); i++) {

希望有帮助!

提示:您应该始终提供较小版本的代码,以便了解您的要求。

答案 1 :(得分:1)

我假设您想使用 for 随机化循环次数。因此执行以下步骤:

//Add code to generate a random number
const random = (min, max) => Math.floor(Math.random() * (max - min)) + min;

//Modify thel clearIntervl line:
if (count == random) clearInterval(interVal);