javascript - Javascript随机元素,不重复最后一个
问题描述
我有一些 JavaScript 从数组中获取随机元素。当我按下一个按钮时,它会选择另一个随机元素。如何防止同一元素连续被选中两次?
这是随机元素代码:
var arr= ["cat1.jpg", "cat2.jpg", "cat3.jpg", "cat4.jpg", "cat5.jpg", "cat6.jpg", "cat7.jpg", "cat8.jpg", "cat9.jpg","cube1.jpg", "cube2.jpg", "cube3.jpg", "cube4.jpg", "cube5.jpg", "cube6.jpg", "cube7.jpg", "cube8.jpg"];
let randomElement = arr[Math.floor(Math.random() * arr.length)];
console.log(randomElement);
image.src=(randomElement);
这里是按钮的代码:
catbutton.onclick=function(){catfunction()};
function catfunction(){
if (randomElement=="cat1.jpg" || randomElement=="cat2.jpg" || randomElement=="cat3.jpg" || randomElement=="cat4.jpg" || randomElement=="cat5.jpg" || randomElement=="cat6.jpg" || randomElement=="cat7.jpg" || randomElement=="cat8.jpg" || randomElement=="cat9.jpg"){
x++;
randomElement = arr[Math.floor(Math.random() * arr.length)];
console.log(randomElement);
console.log(randomElement);
image.src=(randomElement);
}
else{
pantplay.style="display: none";
puntuator.style="display: ";
puntuation.innerHTML=x;
closepunt.onclick=function(){closepuntuation()};
}
}
解决方案
您可以将选择的最后一个元素的索引存储为变量,并使用 do-while 循环来确保下一个随机数不等于该变量。
伪代码:
do {
randIndex = Math.floor(Math.random() * arr.length);
}
while(randIndex == lastIndex);
randomElement = arr[randIndex];
lastIndex = randIndex;
推荐阅读
- ldap - 尝试连接 LDAP 时如何解决“空编码密码”错误
- android - Android MediaPlayer 从网络播放音频文件,但不能播放 .ape、.flac 大尺寸音频?
- deep-learning - 测试网络时出现 NaN 错误,可能是什么原因?
- lucene - 如何创建 Lucene 索引,其中文档是扫描图像等?
- heroku - heroku pg:psql 保持连接,但之后没有任何反应
- bokeh - 如何在开发模式下启动散景服务器?
- mongodb - 从本地数据库中删除的集合
- angular - 如何在表格中生成一个空行,其中包含角度 7 中的特定字段
- django - 如何加载到 Django Paginator 页面(下一个/上一个)?
- python - “列表”对象在保存表单数据时没有属性“_committed”