javascript - 从数组中随机选择项目,并且仅在之前未使用过的情况下使用

标签 javascript arrays function compare var

我正在创建一个刽子手游戏,并从预定义的数组中选择一个随机单词。

像这样:

// Select random word to guess
function getWord() {
  var a = new Array('one', 'two', 'three', 'four');
  return a[parseInt(Math.random() * a.length)];
}

我想做的是阻止它选择同一个单词两次或更多次。 目前,当使用少量单词时,有时会连续重复同一个单词 2 或 3 次。

我不太确定如何解决这个问题。

首先,我想也许可以将单词插入到一个新变量中,然后进行比较,但不确定这是一个好方法。

任何想法都会有帮助。谢谢!

最佳答案

您可以使用数组拼接删除随机位置的元素,然后当您的数组长度为0时,重新初始化它
像这样的东西:

var all_words = [];
function getWord() {
    if (all_words.length === 0) {
        all_words = new Array('one', 'two', 'three', 'four');
    }
    var randIndex = parseInt(Math.random() * all_words.length);
    var chosenWord = all_words.splice(randIndex, 1);
    return chosenWord;
}

这里是demo .

关于javascript - 从数组中随机选择项目,并且仅在之前未使用过的情况下使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810465/

相关文章:

javascript - Rails 5 上的 Turbolinks 和 jQuery 兼容性

javascript - 如何使用 00 :00 time format?(秒:毫秒)修复我的 Javascript 秒表

JavaScript 箭头函数用于计算调用时间,但不带任何参数

php - 处理来自多个选择字段的数据

JavaScript 扩展运算符 ... 与 "arguments"数组

javascript - 声明后执行命名函数

JavaScript正则表达式用一个替换重复的字符

javascript - Meteor 的简单架构 - 如何使用 JS 检查架构内散列中是否存在值?

arrays - Kotlin从2个数组中过滤最大值的方法?

arrays - 按特定顺序排列数组中的元素