为了账号安全,请及时绑定邮箱和手机立即绑定

如果数据库中已存在用户,如何使用 Math.random() 将其排除在随机之外

如果数据库中已存在用户,如何使用 Math.random() 将其排除在随机之外

慕田峪9158850 2022-06-09 11:28:20
作为学校项目的一部分,我们正在创建一个应用程序,如果他们玩相同的游戏,用户可以在其中相互匹配。当您单击 matchButton 时,一个玩您选择的游戏的随机用户将显示在页面上。您可以选择喜欢该用户或继续点击 matchButton 以随机化另一个用户。现在我们要确保您已经喜欢的用户不会被随机化,因此不会在页面上呈现。对于每个用户,被点赞的用户都保存在数据库中名为 match 的数组中。玩相同游戏的用户保存在一个名为 numOfMatches 的数组中。因此,我们使用 numOfMatches 来随机化用户。我想我必须遍历数据库中的 numOfMatches 和匹配数组,以查看 numOfMatches 中的用户是否已经在数据库中。如果是这样,我需要从 numOfMatches 中删除用户,以便它不包含在 Math.random 代码中。我在这篇文章的最后一个函数中尝试使用此代码,但在理解如何访问用户对象中匹配数组中的元素以及如何使用拼接(以及我应该将代码放置在哪个函数中)时遇到了问题我们使用回调,我认为这有点棘手):for(let i = 0; i < numOfMatches.length; i++) {    for(let j = 0; j < users[j].match.length; j++) {        if(numOfMatches[i] === users[j].match) {          let position = numOfMatches.indexOf(randomUser)             numOfMatches.splice(position, 1)        }    }}我非常感谢您的想法和建议。来自数据库的样本:{   "username":"bobox",   "email":"bobox@hotmail.com",   "password":"test234",   "gender":"Man",   "age":"17",   "city":"Jönköping",   "games":"Battlefield V",   "usernameDiscord":"bigbox",   "usernameSteam":"bigbox",   "usernameOrigin":"bobox",   "match":[      "carro",      "arooma",      "gamer_girl"   ],   "_id":"WRa86pRsVex6NBe2"}
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

这是一个简单的例子。


const candidate = [1,2,3,4,5,6,7,8,9,0]

const exclude = [1,3,7]


let target = candidate.filter(x=>!exclude.includes(x))

console.log(target)


console.log(target[Math.floor(Math.random() * target.length)])


查看完整回答
反对 回复 2022-06-09
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信