从javascript数组中随机选择一个项目,不重复或破坏数组



每次单击按钮时,我试图从数组向用户提供单词。我想随机念一遍,不要重复。但是,我不想从数组中拼接所提供的单词(最终数组项将是用于听写的音频记录,并且我希望用户能够在必要时重复该单词)。

我已经尝试了一些事情,最简短的解决方案似乎涉及拼接数组,最终破坏它。我认为这对我的情况是不正确的。

下面是代码(在JSFiddle中):

var usedModuleOneWords = [];
var moduleOneArray = ["sit", "sat", "mat"];
var combined = (moduleOneArray, usedModuleOneWords);
const placeWordFromList = function() {
for (const v of new Set([...moduleOneArray, ...usedModuleOneWords]))
if (moduleOneArray.filter(e => e === v).length !== usedModuleOneWords.filter(e => e === v).length)
{
const randomWord = Math.floor(Math.random() * moduleOneArray.length);
const displayWord = (randomWord, moduleOneArray[randomWord]);
document.getElementById("word").innerHTML = displayWord;
usedModuleOneWords.push(displayWord);
console.log(usedModuleOneWords);
} else {
console.log("All Words Used!");
}
}

想得简单一点

const placeWordFromList = function() {
let randWord = moduleOneArray[Math.floor(Math.random() * moduleOneArray.length)];
console.log(randWord);

if(usedModuleOneWords.length >= moduleOneArray.length){
console.log('All words are used!');
} else if(usedModuleOneWords.indexOf(randWord) == -1){
console.log(randWord);
document.getElementById('word').innerHTML = randWord;
usedModuleOneWords.push(randWord);
} else{
placeWordFromList();
}
}

这里是JSFiddle

最新更新