从数组中随机选择项目,仅在之前未使用过的情况下使用[重复]
Posted
技术标签:
【中文标题】从数组中随机选择项目,仅在之前未使用过的情况下使用[重复]【英文标题】:Randomly select item from array and only use if it has not been used before [duplicate] 【发布时间】:2015-05-02 20:16:19 【问题描述】:我正在创建一个刽子手游戏,我正在从预定义的数组中选择一个随机单词。
像这样:
// Select random word to guess
function getWord()
var a = new Array('one', 'two', 'three', 'four');
return a[parseInt(Math.random() * a.length)];
我想做的是阻止它选择相同的单词两次或更多次。 目前,当使用一个小的单词数组时,有时会连续重复同一个单词 2 或 3 次。
我不太确定如何解决这个问题。
首先我想也许可以将这个词插入一个新变量,然后进行比较,但不确定这是一个好方法。
任何想法都会有所帮助。谢谢!
【问题讨论】:
您可以shuffle the array,并检索从 0 到长度 - 1 的值。 你可以使用indexOf
方法
【参考方案1】:
您可以使用array splice
删除随机位置的元素,然后当您的数组长度为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。
【讨论】:
var a = new Array('one', 'two', 'three', 'four'); function getWord() return a.splice(parseInt(Math.random() * a.length), 1)[0];
以上是关于从数组中随机选择项目,仅在之前未使用过的情况下使用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何确保从数组中随机选择的下一个值与使用 Javascript 的当前值不同? [复制]