简体   繁体   English

如何在 JavaScript 中配对来自不同数组的两个项目?

[英]How to pair two items from different arrays in JavaScript?

Let's assume that I have two arrays with objects in them.假设我有两个包含对象的数组。

 var teams = [tobj1, tobj2 ...]
 var players = [pobj1, pobj2 ...]

The objects have 1 property (name: teamname/playername).这些对象有 1 个属性(名称:团队名称/玩家名称)。

var tobj1 = {
name: playername // this comes from an inputfield
}

What I'm trying to do is pairing randomly a team with a player until every team got a player.我想要做的是随机配对一个团队和一个球员,直到每支球队都有一个球员。 The number of teams are equal to the number of players.球队的数量等于球员的数量。

Hint: it will be a football draw app提示:这将是一个足球抽奖应用程序

Thanks for the help.谢谢您的帮助。

let players = [ { name: 'a' }, { name: 'b' }, { name: 'c' } ];
const teams = [ { name: '1' }, { name: '2' }, { name: '3' } ];

const appairedTeams = teams.map( team => {
  let index = Math.floor(Math.random() * players.length);

  team.player = players[index];

  players.splice(index, 1);

  return team;
});

Or if you don't want to create a new object:或者,如果您不想创建新对象:

let players = [ { name: 'a' }, { name: 'b' }, { name: 'c' } ];
let teams = [ { name: '1' }, { name: '2' }, { name: '3' } ];

teams.forEach( team => {
  let index = Math.floor(Math.random() * players.length);

  team.player = players[index];

  players.splice(index, 1);
});

Or if you want the player's name only:或者,如果您只想要玩家的名字:

let players = [ { name: 'a' }, { name: 'b' }, { name: 'c' } ];
let teams = [ { name: '1' }, { name: '2' }, { name: '3' } ];

teams.forEach( team => {
  let index = Math.floor(Math.random() * players.length);

  team.playerName = players[index].name;

  players.splice(index, 1);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM