Javascript 随机报价机-如何避免重复报价

Javascript 随机报价机-如何避免重复报价,javascript,random,Javascript,Random,我的问题是关于我正在开发的报价生成器。它在onload:)上也可以工作,但我想忽略下一个onclick随机选取的报价与上一个显示的报价相同的情况。我希望它是不同的。谢谢你的提示 这是我的js代码: var quotes = [ { text: "Memento mori", autor: "Bractwo Męki Pańskiej" }, { text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",

我的问题是关于我正在开发的报价生成器。它在onload:)上也可以工作,但我想忽略下一个onclick随机选取的报价与上一个显示的报价相同的情况。我希望它是不同的。谢谢你的提示

这是我的js代码:

var quotes = [
  { text: "Memento mori", 
   autor: "Bractwo Męki Pańskiej" },
  {
    text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",
    autor: "Walt Disney"
  },
  {
    text: "Wszystko jest możliwe. Niemożliwe wymaga po prostu więcej czasu.",
    autor: "Dan Brown"
  },
  {
    text: "Czerp z innych, ale nie kopiuj ich. Bądź SOBĄ",
    autor: "Michel Quois"
  },
  {
    text: "Kiedy łamiesz zasady, łam je mocno i na dobre.",
    autor: "Terry Pratchett"
  }
];

window.onload = function() {
  quoteMachine.initialQuote()
};

var quoteMachine = {

initialQuote: function() {

var newInitialQuote = quotes[Math.floor(Math.random() * quotes.length)];

var newInitialQuoteText = newInitialQuote.text;
var newInitialQuoteAutor = newInitialQuote.autor;

    document.getElementById("new-quote").innerHTML = newInitialQuoteText;
    document.getElementById("autor").innerHTML = newInitialQuoteAutor;
  }
};
这是一个工作示例:


正如我在下面所写的,要么我做错了什么,要么这些答案都不起作用。这是codepen.io的链接,也许有人可以看一下并帮助我:

您可以将上一个随机索引保存在一个变量中,然后在第二次单击“随机”后,直到“新随机”与上一个不同

设置一个全局变量,例如
let previous=-1
,然后:

let random = Math.floor(Math.random() * quotes.length);

while(previous == random)
{
    random = Math.floor(Math.random() * quotes.length)
}
previous = random
var newInitialQuote = quotes[random];

也许您可以添加一个标志,显示在数据中:

var quotes = [
  {
   showed: false,
   text: "Memento mori", 
   autor: "Bractwo Męki Pańskiej"
  },
  {
    showed: false,
    text: "Jeśli możesz sobie coś wymarzyć, możesz też to zrobić.",
    autor: "Walt Disney"
  },
  {
    showed: false,
    text: "Wszystko jest możliwe. Niemożliwe wymaga po prostu więcej czasu.",
    autor: "Dan Brown"
  },
  {
    showed: false,
    text: "Czerp z innych, ale nie kopiuj ich. Bądź SOBĄ",
    autor: "Michel Quois"
  },
  {
    showed: false,
    text: "Kiedy łamiesz zasady, łam je mocno i na dobre.",
    autor: "Terry Pratchett"
  }
];

window.onload = function() {
  quoteMachine.initialQuote()
};

var quoteMachine = {

initialQuote: function(next) {

var rand_number = Math.floor(Math.random() * quotes.length);
var newInitialQuote = quotes[rand_number];

if (newInitialQuote.showed) {
  var next = -1;
  for (var i = 0; i < quotes.length; i++) {
    if (quotes[next].showed == false) {
      break;
    }
  }

 if (next == -1) {
   document.getElementById("new-quote").innerHTML = "Sorry I have not new quotes";
   document.getElementById("autor").innerHTML = "John Doe";
   return;
 }
 rand_number = next;
 newInitialQuote = quotes[rand_number];
}

quotes[rand_number].showed = true;

var newInitialQuoteText = newInitialQuote.text;
var newInitialQuoteAutor = newInitialQuote.autor;

    document.getElementById("new-quote").innerHTML = newInitialQuoteText;
    document.getElementById("autor").innerHTML = newInitialQuoteAutor;
  }
};
var引号=[
{
显示:错误,
文字:“森喜朗纪念”,
自动:“两个Męki Panęskiej”
},
{
显示:错误,
文本:“Jeśli możesz sobie cośwymarzyć,możesz teżto zrobić。”,
自动:沃尔特·迪斯尼
},
{
显示:错误,
文字:“Wszystko开玩笑,尼莫·利韦·维马加·普罗斯图·维切伊·捷克。”,
自动:丹·布朗
},
{
显示:错误,
文字:“Czerp z innych,ale nie kopiuj ich.BądźSOBĄ”,
作者:“米歇尔·库瓦”
},
{
显示:错误,
文字:“基迪·阿米斯·扎萨迪,我是莫克诺·纳多布雷。”,
自动:特里·普拉切特
}
];
window.onload=函数(){
quoteMachine.initialQuote()
};
变量quoteMachine={
initialQuote:函数(下一个){
var rand_number=Math.floor(Math.random()*quotes.length);
var newInitialQuote=quotes[rand_number];
if(newInitialQuote.show){
var-next=-1;
for(var i=0;i
每次生成随机数时,如果我做错了什么或上述代码不起作用,请将引号数组洗牌。我已经将let prevuios包含在函数外,而在函数内-它有时仍然重复相同的引用。