javascript - 从数组中生成所有可能的单挑对决

标签 javascript node.js underscore.js lodash

我正在尝试找到一种高效的方法来为数组中的玩家创建比赛,并为多维数组中的所有玩家返回所有可能的比赛,而不复制任何比赛。

这是我的例子:

// input
var players = [
  {player: 'sam' }, {player: 'bob' }, {player: 'tim' }, {player: 'kevin' }
];

// output
var mathups = [
  [{player: 'sam'},  {player: 'bob}],  
  [{player: 'sam'},  {player: 'tim'}], 
  [{player: 'sam'},  {player: 'kevin'}],
  [{player: 'bob'},  {player: 'tim'}],  
  [{player: 'bob'},  {player: 'kevin'}]
  ... and so on
];

有没有人对如何使用普通 JS 或使用 lodash 或下划线之类的东西有任何建议?

最佳答案

可以在没有外部库的情况下像这样生成组合:

var players = [
  {player: 'sam' }, {player: 'bob' }, {player: 'tim' }, {player: 'kevin' }
];


var m = [];

for (var i = 0; i < players.length; i++) {
  for (var j = i+1; j < players.length; j++) {
    m.push([players[i], players[j]]);
  }
}
console.log(JSON.stringify(m,null, 2));

关于javascript - 从数组中生成所有可能的单挑对决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518727/

相关文章:

javascript - 为什么 <div> 不移动?

javascript - 读取文本文件中的特定列

javascript - 检测文件上传是通过拖动还是常规输入点击

javascript - "Cut and Paste"- 使用 Javascript 在 DOM 中移动节点

javascript - Node 模块和常规 javascript 文件有什么区别

javascript - 如何从 Angular Directive(指令)中的数组中删除

javascript - http.get() 中的每秒请求数 - Node.js

node.js - 将 AWS EB 平台版本从 2.0.1 升级到 3.1.0

javascript - 带下划线的 map 缩小对象

javascript - 下划线多重排序