Javascript 如何生成数字以使';s从不使用背对背数组索引值?

Javascript 如何生成数字以使';s从不使用背对背数组索引值?,javascript,arrays,random,event-handling,Javascript,Arrays,Random,Event Handling,我需要一些修改JavaScript的帮助,以确保每次单击都会生成一个不同于上一个索引值的当前颜色索引值,即确保在单击按钮时索引号不会连续重复 var colors=[“绿色”、“红色”、“rgba(13312200)”、“黄色”]; const btn=document.getElementById('btn'); const color=document.querySelector('.color'); btn.addEventListener('click',randomColor); 函

我需要一些修改JavaScript的帮助,以确保每次单击都会生成一个不同于上一个索引值的当前颜色索引值,即确保在单击按钮时索引号不会连续重复

var colors=[“绿色”、“红色”、“rgba(13312200)”、“黄色”];
const btn=document.getElementById('btn');
const color=document.querySelector('.color');
btn.addEventListener('click',randomColor);
函数randomColor(){
var-previous=0;
var值;
var max=4+(!isNaN(先前)?-1:0);
值=Math.floor(Math.random()*(max));
如果(值>=上一个){
数值+=1;
}
先前=值;
document.body.style.backgroundColor=颜色[值];
color.innerText=颜色[值];
返回值;
}

背景色:
#f1f5f
点击我
var colors=[“绿色”、“红色”、“rgba(13312200)”、“黄色”];
const btn=document.getElementById('btn');
const color=document.querySelector('.color');
btn.addEventListener('click',randomColor);
函数randomColor(){
如果(颜色.长度>1){
var-next;
做{
next=colors[Math.floor(Math.random()*colors.length)];
}while(next==color.innerText);
document.body.style.backgroundColor=next;
color.innerText=next;
}
否则{
console.log(“颜色不够”);
}
}

背景色:
白色
点击我

读取当前颜色,将“下一个颜色”设置为“随机”,而“下一个颜色”等于“当前颜色”:将“下一个颜色”设置为“随机”。循环后:使用下一个颜色值。嘿,伙计,谢谢你帮我。它按预期工作。但我不清楚do/while语句究竟是如何防止同一颜色背靠背重复的。
while
检查一个条件,很像
if
,如果条件的计算结果为
true
,它将从
while
循环并重复,如果计算结果为
false
,则它将退出循环并继续执行下一行代码。
var next
使用值
未定义的
声明next
do
next
指定随机颜色
while
next
的值与
color.innerText
进行比较。只要随机颜色与范围中的颜色相同,它将继续尝试另一种随机颜色。这就是为什么我添加了一个检查,以查看至少有两种颜色可供选择-一种或任何颜色都会导致无限循环-一种颜色会改变一次,因为
白色
不在
颜色
数组中。我一发布该评论,它就击中了我。我知道了!谢谢你抽出时间。学习缓慢但坚定。