在这个小提琴http://jsfiddle.net/5L8Q8/28/中,如果单击黑色按钮,它将从数组中随机选择两个值(红色或蓝色)之一。随机选择的值分配给ran
。在我的实际应用程序中,该数组中将包含16个元素。
如果您使用粉红色的“再次播放”按钮,它将从同一数组中选择一个随机元素,但我想确保它与上次选择的元素不同。
因此,当我单击playagain
时,我将ran
分配给lastran
并将其与数组中下一个随机选择的值进行比较,如果它们相同,则再次随机选择。但是,我的方式不能保证playagain
(在ran
完成时)是不同的。
我认为我需要一个递归函数,其中注释2在下面的代码中,但是当我尝试创建它时,我一直在破坏代码。
您可以在以下代码中评论3条评论吗?
注意,我是一个相对新手,所以这段代码可能很糟糕...
$("#playagain").click(function(){
lastran = ran;
ran = getRandom(myArray, true);
if (ran === lastran) {
ran = getRandom(myArray, true); //1. do I need to return this?
//2. want to test ran === lastran again.. How to set up recursive function?
} else {
return; //3.is this the right thing to do here?
}
});
最佳答案
您可以使用while循环代替if。
while(ran == lastran)
{
ran = getRandom(myArray, true);
}
它将一直尝试直到获得不同的值。
关于javascript - JavaScript:是否需要递归函数来解决此问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6770261/