【问题标题】:How to pair two items from different arrays in JavaScript?如何在 JavaScript 中配对来自不同数组的两个项目?
【发布时间】:2018-08-14 14:00:49
【问题描述】:

假设我有两个包含对象的数组。

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

对象有 1 个属性(名称:团队名称/玩家名称)。

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

我正在尝试将一支球队与一名球员随机配对,直到每支球队都有一名球员。队伍的数量等于玩家的数量。

提示:这将是一个足球抽签应用程序

感谢您的帮助。

【问题讨论】:

  • 你尝试了什么?

标签: javascript arrays sorting object random


【解决方案1】:
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;
});

或者如果您不想创建新对象:

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);
});

或者如果你只想要玩家的名字:

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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2022-10-05
    • 2013-02-05
    相关资源
    最近更新 更多