-1

Does anyone know how you can pick more than one random element from an array? The code below is a simplified version of my code, but i think it should be enough.

My code picks a random quote from the array, then fills a div with the random string. But here comes my question, how do i get a new quote when userinput === quoteRandom. The code should be able to do this multiple times.

let quote_array = [
  'Gresset er grønnere på andre siden av gjerdet',
  'Å være sliten og nedfor og er ikke et tegn på svakhet, mest sannsynlig har du vært sterk for lenge',
  'Jeg skulle ikke spise den, jeg skulle bare smake på den',
  'Nøtter er ikke noe for en hel rev'
];

//Pick random quote
let quoteRandom = sitat_array[Math.floor(Math.random() * sitat_array.length)];

//Fill a div with quoteRandom
function fillQuote() {
  div.innerText = quoteRandom;
  }

//If userinput === quoteRandom
function newQuote() {
  fillQuote();
  }

1 Answers1

0

If you mutate the origanal array with sort and pop, every time you can get a random element form the rest of the array. So you will never get a quote again, only all the elements are poped, and the array is reinitialized.

let quote_array = [];

function getaquote() {
  if (quote_array.length === 0) {
    quote_array = [
      'Gresset er grønnere på andre siden av gjerdet',
      'Å være sliten og nedfor og er ikke et tegn på svakhet, mest sannsynlig har du vært sterk for lenge',
      'Jeg skulle ikke spise den, jeg skulle bare smake på den',
      'Nøtter er ikke noe for en hel rev'
];
  }
  quoteRandom1 = quote_array.sort(() => (Math.random() > .5) ? 1 : -1).pop();
  console.log(quoteRandom1);
}
<button onclick="getaquote()">get a quote</button>
exphoenee
  • 465
  • 4
  • 11