如果并返回Nodejs或Java

时间:2017-06-23 16:17:25

标签: javascript node.js

我有这个示例代码

var randFriend = friendList[Math.floor(Math.random() * friendList.length)];
if (randFriend == admin) {
    //Here
}
else if (randFriend != admin) {
    client.removeFriend(randFriend);
}

如果if randfriend == admin再次执行var randFriend = friendList[Math.floor(Math.random() * friendList.length)];并再次检查if(randFriend == admin),该怎么办?换句话说,再次重启。

我认为它完成了回归,但我不知道。感谢

3 个答案:

答案 0 :(得分:1)

我不会在随机条件下使用递归或循环,因为估计运行时会遇到问题,如果用例发生变化并且你想要忽略更多元素,那么找到正确元素的概率会减少。

更好的想法是过滤数组以删除要忽略的元素,然后从该列表中选择一个随机元素。

var nonAdminList = friendList.filter(person => person != admin);

if( nonAdminList.length === 0 ) {
  throw new Error('no non admin persons available');
}

client.removeFriend(nonAdminList[Math.floor(Math.random() * nonAdminList.length)]);

答案 1 :(得分:0)

如果我正确理解了这个问题,你可以使用while循环来保持随机化,直到没有选择管理员

var friendAdmin = true;
var randFriend;
while(friendAdmin){
   randFriend = friendList[Math.floor(Math.random() * friendList.length)];
   if(randFriend != admin) friendAdmin = false;
}
client.removeFriend(randFriend);

答案 2 :(得分:0)

我会将您的代码放入一个函数中,以便您可以重复调用该函数。例如:

function choose(){
        var randFriend = friendList[Math.floor(Math.random() * friendList.length)];
        if(randFriend == admin){
            choose(); //this repeats the choose function, which will run the random friend code again
        }
        else if(randFriend != admin){
            client.removeFriend(randFriend);
            return; //this exits the function
        }
    }