javascript - 为什么我的避免连续生成两个随机数的简单例程不起作用?

标签 javascript random

我正在参加随机报价生成器免费代码训练营挑战,但不想连续两次出现相同的报价。我得出了与这里的人完全相同的结论:https://codereview.stackexchange.com/questions/62018/prevent-repetitive-random-numbers

然而,他说他的作品,但我的作品仍然没有。我的笔可以在这里找到:http://codepen.io/thomasdean/pen/qZGQxK

代码是:

  $(document).ready(function() {

    $("#getQuote").on("click", function() {
      $.getJSON("http://codepen.io/thomasdean/pen/Yqmgyx.js", function(json) {

        var html = "";
        var lastQuote = "";
        var whichQuoteToChoose = "";

        while (whichQuoteToChoose === lastQuote) {
          whichQuoteToChoose = Math.floor(Math.random() * 12); // returns a number between 0 and 11
        }
        lastQuote = whichQuoteToChoose;

        // this converts raw data into html

        json = json.filter(function(val) {
          return (val.id == whichQuoteToChoose);
        });

        json.forEach(function(val) {

          html += "<div class = 'quote'>"

          html += "<h2>\"" + val.Quotation + "\"</h2><h2>" + val.Quotee + "</h2>"

          html += "</div>"

        });

        $(".quote").html(html);

      });
    });
  });

理论上,使用 while 循环和紧随其后的赋值应该可以解决问题。

感谢您的所有帮助。

最佳答案

只是不要在每个点击事件上重写lastQuote 和whichQuoteToChoose。所以我将这些变量移出点击事件:)

     $(document).ready(function() {
     var lastQuote = "";
    var whichQuoteToChoose = "";
     $("#getQuote").on("click", function() {
         $.getJSON("http://codepen.io/thomasdean/pen/Yqmgyx.js", function(json) {

        var html = "";


        //alert(lastQuote)
        while (whichQuoteToChoose === lastQuote) {
          whichQuoteToChoose = Math.floor(Math.random() * 12); // returns a number between 0 and 11
        }
        lastQuote = whichQuoteToChoose;

        // this converts raw data into html

        json = json.filter(function(val) {
          return (val.id == whichQuoteToChoose);
        });

        json.forEach(function(val) {

          html += "<div class = 'quote'>"

          html += "<h2>\"" + val.Quotation + "\"</h2><h2>" + val.Quotee + "</h2>"

          html += "</div>"

        });

        $(".quote").html(html);

      });
    });
  });

关于javascript - 为什么我的避免连续生成两个随机数的简单例程不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37417722/

相关文章:

javascript - 框架如何实现自定义HTML属性和双重 curl 等功能?

javascript - 一个站点上有多个 iframe,仅加载前 2 个

c++ - 使用单个生成器卷从多个分布中获取值

python - 如何以随机顺序执行多个功能?

javascript - 指挥官.js : passing isDefault option for command with action()

javascript - 在 JavaScript 类中添加回调功能

c - 生成随机线性无关二元 vector 的问题

c - 在 C 中的一行中用随机字节填充多维数组

javascript - .each 不在数组上工作。但是 .isArray 返回 true?

mysql - 在 MySQL 中生成一个随机字符串