I have some code to randomly highlight one name from a list (this works – see this fiddle):
function pickRandom() {
var random = Math.floor(Math.random() * 6);
$('.stname').css('background','none').eq(random).css('background','yellow');
}
But I’d like to make sure that the same names don’t come up over and over. So I intend to remember the last 3 chosen indexes as a blacklist:
var recentlyAsked = new Array();
function pickRandom() {
var random;
do {
random = Math.floor(Math.random() * 6);
} while ($.inArray(random,recentlyAsked));
recentlyAsked.push(random);
if (recentlyAsked.length >= 4) recentlyAsked.shift();
$('.stname').css('background','none').eq(random).css('background','yellow');
}
This is not working; see this fiddle. Warning: it causes the browser to hang.
Any suggestions, please?
Runs forever because
inArrayreturns-1when an item is not found in the array, which is a truthy value.0is the only number that is a falsy value. Your array is initially empty so nothing is found.Fix it with :
This will stop when it returns
-1(not found)