我有一组名为randomUserArray
的用户。从那里我想检索一个随机用户并传递它。如果所选用户与clientNickname
相同,我需要重新启动该函数,因此它不会返回randomRecipient
,也就是clientNickname
。现在我的功能无论如何都将返回它们。
function randomRecipientCalc (clientNickname){
var randomRecipient = randomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
while (randomRecipient == clientNickname) {
randomRecipient = randomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
}
return randomRecipient;
}
让我们说我的阵列中有两个用户(在任何给定时间都是最小的)
`var randomUserArray = ["user1","user2"]`
和" user1"也是客户
var clientNickname = "user1"
然后我用
var Recipient = randomRecipientCalc();
让用户选择该功能。在这种情况下,它需要是" user2"。 如果它不是,意思是
randomRecipient == clientNickname
我有控制台打印错误。它现在做了。
答案 0 :(得分:0)
您的代码对我有用:
var randomUserArray = ["b","b","b","c","b","b"];
function randomRecipientCalc (clientNickname){
var randomRecipient = randomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
while (randomRecipient == clientNickname) {
randomRecipient = randomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
}
return randomRecipient;
}
console.log(randomRecipientCalc("b"));
答案 1 :(得分:0)
您可以通过删除重复元素来简化问题。例如:
var temporaryRandomUserArray = randomUserArray.filter(function(ele) {
return !(ele === clientNickname); // keep if ele not equal to clientNickname
});
temporaryRandomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
...
..
这样的事情很简洁明了。不需要递归函数调用。