javascript - 记住 jQuery 中的最后 n 项

标签 javascript jquery arrays queue

我有一些代码可以随机突出显示列表中的一个名称(这有效 - 请参阅 this fiddle ):

function pickRandom() {
  var random = Math.floor(Math.random() * 6);
  $('.stname').css('background','none').eq(random).css('background','yellow');
}

但我想确保相同的名字不会一遍又一遍地出现。所以我打算记住最后 3 个选择的索引作为黑名单:

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 fiddle警告:它会导致浏览器挂起。

请问有什么建议吗?

最佳答案

do {
    random = Math.floor(Math.random() * 6);
  } while ($.inArray(random,recentlyAsked));

永远运行,因为当在数组中找不到项目时,inArray 返回 -1,这是一个真值。 0 是唯一一个假值。您的数组最初是空的,因此什么也找不到。

修复它:

do {
    random = Math.floor(Math.random() * 6);
  } while ($.inArray(random,recentlyAsked) > -1);

当返回-1(未找到)时,这将停止

关于javascript - 记住 jQuery 中的最后 n 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196508/

相关文章:

javascript - 将杏仁与 grunt-contrib-requirejs 一起使用

javascript - 鼠标移动和 onclick 事件

php - Codeigniter 分页和 JQuery 操作

javascript - 在 JavaScript 中将 JSON 对象转换为 CSV 格式

PHP - 试图获取非对象的属性

javascript - 循环遍历包含对象的数组的数组,并在 JavaScript/Angular 中更新数组

javascript - pipe() 函数的 typescript 类型

javascript - 如何使用 html 或 javascript 将光标样式设置为圆圈

javascript - jQuery keydown 后访问属性

javascript - javascript中的对象访问与数组访问