首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在函数内部循环,直到达到目标

在函数内部循环,直到达到目标
EN

Stack Overflow用户
提问于 2016-07-06 00:23:24
回答 2查看 75关注 0票数 0

我有一个名为

..。从那里,我想检索一个随机用户并将其传递。如果选择的用户与

我需要函数重新开始,这样它就不会返回

这也是

..。现在,我的函数无论如何都会返回它们。

代码语言:javascript
运行
复制
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;

}

假设我的数组中有两个用户(这在任何给定时间都是最小值)

代码语言:javascript
运行
复制
`var randomUserArray = ["user1","user2"]`

而"user1“也是客户端

代码语言:javascript
运行
复制
var clientNickname = "user1"

然后我使用

代码语言:javascript
运行
复制
var Recipient = randomRecipientCalc();

来获取函数选择的用户。在这种情况下,它需要是"user2“。如果不是,则意味着

代码语言:javascript
运行
复制
randomRecipient == clientNickname

我让控制台打印了一个错误。它现在就是这么做的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-06 00:41:38

您可以通过删除重复的元素来简化问题。示例:

代码语言:javascript
运行
复制
var temporaryRandomUserArray = randomUserArray.filter(function(ele) {
    return !(ele === clientNickname); // keep if ele not equal to clientNickname
});
temporaryRandomUserArray[Math.floor((Math.random() * randomUserArray.length) + 0)];
...
..

像这样的东西是整洁和清晰的。不需要递归函数调用。

票数 0
EN

Stack Overflow用户

发布于 2016-07-06 00:31:05

你的代码正在为我工作:

代码语言:javascript
运行
复制
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"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38208274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档