迭代数组直到随机值不等于任何值

时间:2015-01-06 16:34:52

标签: javascript

首先,我对编程非常陌生,所以提前道歉。

这就是我想要做的事情:

1)使用

为变量生成随机值
questionNr = Random.Range(0, nNodes);

2)通过遍历其所有值

将该变量与数组进行比较
for(var i=0; i<usedQuestionList.length(); i++){
    if(questionNr == usedQuestionList[i]){
        //stuff
    }   
}

3)如果数组的任何值等于所述变量的值,则从头开始生成一个新的随机值并再次遍历该数组。传递/结束循环的唯一方法是当随机值不等于数组中的任何值时。

问题在于,如果我这么简单地进行循环操作,那么当条件不满足时,我无法返回并再次执行所有操作。

我非常确定我只是接近逻辑错误而且这是一种简单的方法来做到这一点并没有发生在我身上,这就是为什么我&#39 ;我没有添加失败的for和while循环尝试中的任何代码。感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

你可以设置一个你可以在循环结束后检查的标志,可能是这样的:

//A function that will take a number and check against the array
var loopRandomNumber = function(number){

    //A flag to be used if match is found
    var foundMatch = false;

    //Your simple loop
    for(var i=0; i<usedQuestionList.length(); i++){

        //Checking if match
        if(number == usedQuestionList[i]){
            foundMatch = true; //Match found
            break; // Jumps out of the for-loop to be a little faster
        }   

    }

    //Calling this function again with a new random number if match found
    if(foundMatch){
        loopRandomNumber(Random.Range(0, nNodes));
    } else {
        //Handle your condition for if no match was found here
    }

}

loopRandomNumber(Random.Range(0, nNodes));