【发布时间】:2021-04-12 02:02:32
【问题描述】:
我目前正在编写一个为 Mordhau 随机生成加载的脚本。
目前我并不担心它会计算积分值,但我希望它不会重复任何选定的特权。
我有一个数组中的特权:
let perks = ["Smith","Wrecker","Scavenger","Cat","Friendly","Tenacious"]; //etc etc
而且,诚然,我选择它们的方式非常笨拙,但它可以完成大部分工作。
let p1 = perks[Math.floor(Math.random()*(perks.length))]; //perk 1
let p2 = perks[Math.floor(Math.random()*(perks.length))]; //perk 2
let p3 = perks[Math.floor(Math.random()*(perks.length))]; //perk 3
有没有一种方法可以分配这些变量(p1、p2、p3)而不重复数组“perks”中的项目?
提前致谢!
【问题讨论】:
-
你可以复制数组,随机播放,然后
.pop()items,直到它为空。然后再复制一份,洗牌,重复。这样你总是在重复之前遍历数组 - 如果前一个数组的最后一项和下一个数组的第一项相同,那么重复的唯一机会是 - 在这种情况下你可以删除它或重新洗牌。
标签: javascript node.js arrays