我目前正在学习前端开发,在寻求发展技能的过程中,我挑战了自己构建一个随机团队生成器。
一些背景故事;我和我的一些朋友定期在我们组(我们 12 个人)内举办 COD Warzone 锦标赛,我们为每支球队随机选择球员。但是,我想根据 KD 比率(击杀/死亡)自动执行此操作,将最高 KD 分配到 4 个团队中的 1 个。然后我计划对中、下 KD 进行相同的工作。这样一来,所有团队的 KD 比率就会相等。
现在,对于对 JS 还很陌生的人来说,这感觉相当雄心勃勃,我知道我需要一个嵌套数组或对象来容纳名称/KD 数据,然后构建一个函数来遍历每个数组,但是对于我无法弄清楚我的生活。
存储玩家数据的最佳方式是什么?
嵌套数组,例如:
var team = [ [Name, KD], [Name, KD], [Name, KD], [Name, KD]];
还是对象?
var users = { Name:KD, Name:KD, Name:KD,Name:KD,};
然后构建一个函数来运行每个嵌套数组并根据它们的 KD 将它们分配给一个随机的团队变量?
答案 0 :(得分:0)
我会将这些数据存储在玩家对象数组中,例如:
const players = [
{ name: 'Bob', kd: 4 },
{ name: 'Sam', kd: 8 },
{ name: 'Danny', kd: 2 },
{ name: 'Chris', kd: 3 },
];
然后你可以像这样使用 sort() 按 kd 对数组进行排序:
players.sort((a, b) => b.kb - a.kb);
然后您可以在 for 循环中一次将一个玩家推入团队对象中:
const teams = { team0: [], team1: [], team2: [], team3: [] };
for (let i = 0; i < players.length; i++) {
teams['team' + (i % 4)].push(players[i]);
}
答案 1 :(得分:0)
您最初的概念非常简单,“将顶尖的 K/D 球员分配到其他团队中”。为此,您可以按 K/D 对您的球员数组进行排序,让前四名球队领先,然后将下一个顶级球员添加到最低球队。
示例:
const players = [
{ Name: 'B', KD: 9 },
{ Name: 'H', KD: 3 },
{ Name: 'E', KD: 6 },
{ Name: 'D', KD: 7 },
{ Name: 'A', KD: 10 },
{ Name: 'C', KD: 8 },
{ Name: 'J', KD: 1 },
{ Name: 'F', KD: 5 },
{ Name: 'I', KD: 2 },
{ Name: 'G', KD: 4 },
]
const sorted = players.sort((a, b) => a.KD - b.KD)
const teamA = [sorted.pop()] // #1 player
const teamB = [sorted.pop()] // #2 player
const teamC = [sorted.pop()] // #3 player
const teamD = [sorted.pop()] // #4 player
const pushIfDefined = (arr, val) => val && arr.push(val)
while(sorted.length) {
pushIfDefined(teamD, sorted.pop())
pushIfDefined(teamC, sorted.pop())
pushIfDefined(teamB, sorted.pop())
pushIfDefined(teamA, sorted.pop())
}
console.log("Team A: ", teamA)
console.log("Team B: ", teamB)
console.log("Team C: ", teamC)
console.log("Team D: ", teamD)