javascript - 如何在数组中选择随机元素避免(如果是的话除外)某个值?

标签 javascript arrays actionscript-3 flash random

例如,当用户连接到此应用程序时,他们会获得一个用户 ID 变量,然后将其插入到数组中。所以,我正在使用

chosenUser = usersOnlineArray[Math.round((Math.random()*usersOnlineArray.length))];

选择另一个随机用户。但我需要确保它不会选择他们个人分配的用户 ID,这样他们就不会最终得到自己。

我将如何使用该代码,但告诉它“记住,确保你不选择用户 ID”

也许我可以做类似的事情

chosenUser = usersOnlineArray[Math.round((Math.random()*usersOnlineArray.length))];

    if (chosenUser = userid)
    {
        chosenUser = usersOnlineArray[Math.round((Math.random()*usersOnlineArray.length))];
    } else
    {
    //next part of mycode
    }

也许这应该是一个 while (chosenUser = userid) incase 它得到它两次...

但是,我想我可以跳过所有这些,如果有一种有效的方法只是为了确保它不会首先选择它。

抱歉,我不太确定我应该如何表达这个问题,或者是否有一个我不知道的术语来指代我正在尝试做的事情。

最佳答案

使用 Math.round() 会导致返回“undefined”,因为您允许它选择未编入索引的 usersOnlineArray.length。请改用 Math.floor()

你可以将你不想匹配的项目移动到数组的末尾,然后从数组中随机选择一个元素,除了最后一个元素:

//Users Array
var usersArray:Array = new Array("JoeID", "MaryID", "UserID", "JohnID", "SusanID");

//Find UserID And Push It To The End
usersArray.push(usersArray.splice(usersArray.indexOf("UserID"), 1));

//Randomly Select Companion From usersArray Except For UserID (Last Element)
var companion:String = usersArray[Math.floor(Math.random() * (usersArray.length - 1))];

trace(companion);

关于javascript - 如何在数组中选择随机元素避免(如果是的话除外)某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811267/

相关文章:

javascript - 在 Angularjs 中的另一个指令模板中使用一个指令

java - 二维数组的 array.length 值由什么决定?

javascript - 如何从数组中获取单个字段

apache-flex - 弹性/ ActionScript : Dynamically accessing static var

javascript - jqGrid:如何更改单元格填充

javascript - JQuery如何在按下按钮时运行脚本

javascript - 如何查明 XMLHttpRequest.send() 是否有效

php - 从文本单元格到 "real"php 数组

actionscript-3 - 检查 actionscript 3 变量类型?

xml - 使用纯 AS3 创建 Android manifest xml