Javascript 构建随机团队生成器的最佳方法

Javascript 构建随机团队生成器的最佳方法,javascript,arrays,Javascript,Arrays,我目前正在学习前端开发,在我寻求发展我的技能的过程中,我用构建一个随机团队生成器来挑战自己 一点背景故事;我和我的一些朋友定期在我们小组(我们12个人)内举办鳕鱼战区锦标赛,我们随机为每个队挑选球员。然而,我想根据KD比率(死亡/死亡)将其自动化,将最高KD分为4个团队中的1个。然后,我计划对中KD和低KD进行相同的工作。这样,所有团队的KD比率将相等 现在,对于一个对JS还是很陌生的人来说,这感觉很有野心,我知道我需要一个嵌套数组或对象来容纳name/KD数据,然后构建一个函数来遍历每个数组,

我目前正在学习前端开发,在我寻求发展我的技能的过程中,我用构建一个随机团队生成器来挑战自己

一点背景故事;我和我的一些朋友定期在我们小组(我们12个人)内举办鳕鱼战区锦标赛,我们随机为每个队挑选球员。然而,我想根据KD比率(死亡/死亡)将其自动化,将最高KD分为4个团队中的1个。然后,我计划对中KD和低KD进行相同的工作。这样,所有团队的KD比率将相等

现在,对于一个对JS还是很陌生的人来说,这感觉很有野心,我知道我需要一个嵌套数组或对象来容纳name/KD数据,然后构建一个函数来遍历每个数组,但对于我来说,我无法理解它

存储玩家数据的最佳方式是什么

嵌套数组,例如:

var team = [ [Name, KD], [Name, KD], [Name, KD], [Name, KD]];
还是一个物体

var users = { Name:KD, Name:KD, Name:KD,Name:KD,};

然后构建一个函数,该函数将在每个嵌套数组中运行,并根据它们的KD将它们分配给一个随机团队变量?

我将把这些数据存储在一个玩家对象数组中,类似于:

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]);
}
const teams={team0:[],team1:[],team2:[],team3:[]};
for(设i=0;i
您最初的概念非常简单,“将顶级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)


数组数组(所有相同的entries)毫无意义,对象(您发布的方式)无效。至少试着给出一些更接近要点的例子。最好的方法是在应用程序的其余部分中满足您的需要。因为您已经向我们展示了两行伪代码,所以没有办法说哪一行更好。在任何情况下,询问意见而不是事实的问题在堆栈溢出中都会表现不佳。请拿着这本书读一读,这是什么。啊,猎户座的概念完全一样,他把我揍了一顿。唯一的区别是他言简意赅,而我却滔滔不绝。