javascript - 从数组中生成 n 组唯一对

标签 javascript arrays

尝试从数组中生成 n 组唯一对而不重复项,创建一组只使用数组中所有项一次的对。

我正在使用 javascript。我有一个数组,比如 10 个项目,我需要生成以下内容:

我正在使用的代码像这样被绊倒了:

arrPlayers = [1,2,3,4,5,6,7,8,9,10]

matchups-week-1 = [[1,2],[3,4],[5,6],[7,8],[9,10]]

matchups-week-2 = [[1,3],[2,4],[5,7],[6,8],[哎呀!! ] 不能再做 [9,10],所以这组将不起作用。

你看到 9,10 对是如何把代码画到 Angular 落里的吗?你只能产生 4 对,因为 9,10 不是唯一的。

我认为这很容易解决,但我被困住了。关于代码的任何想法都不会把自己描绘成这个“4 件套”的 Angular 落?

我正在使用的代码。 ...诚然,我正在捕获救命稻草。这就是我问这个问题的原因。

function CreateMatchups(player_ids){
    //Create array of PLAYER IDs where checkbox = checked
    arrPlayers = player_ids.split(", ");
    arrOpponents = arrPlayers;
    arrPrevUsed = GetPrevUsedPairs();
    var arrUsed = [];
    var arrTempMatchups = [];

    var intNumPlayers = arrPlayers.length;
    var blnOddNumberOfPlayers = isOdd(intNumPlayers);

    if(blnOddNumberOfPlayers){
        arrPlayers.push(9999); //bogus id for placeholder player - fix this
    }
    for (var i = 0; i < arrPlayers.length; i++) { 
        player_id = arrPlayers[i];
        if(!arrUsed.contains(player_id)){
            for (var j = 0; j < arrOpponents.length; j++) { 
                opponent_id = arrOpponents[j];
                if((!arrUsed.contains(opponent_id)) && (!arrUsed.contains(player_id)) && (player_id != opponent_id)){
                    matchup = player_id + "vs" + opponent_id;
                    if(!arrPrevUsed.contains(matchup)) {
                        arrTempMatchups.push(matchup);
                        arrUsed.push(player_id);
                        arrUsed.push(opponent_id);
                    }
                }
            }
        }
    }
    return arrTempMatchups;

    }

最佳答案

这叫做排列

function pairwise(list) {
  if (list.length < 2) { return []; }
  var first = list[0],
      rest  = list.slice(1),
      pairs = rest.map(function (x) { return [first, x]; });
  return pairs.concat(pairwise(rest));
}

var result = pairwise(['1','2','3','4','5','6','7','8','9','10']);

document.write(JSON.stringify(result));

关于javascript - 从数组中生成 n 组唯一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36254049/

相关文章:

javascript - 使用 JavaScript 添加多个样式

c++ - 如何修改我的 C++ 程序以使用堆栈向后显示用户输入的单词?

javascript - 使用 Ajax Post Call 发送 FormData 会导致 Get

javascript - 如何在 ToolbarAndroid 中为 React Native 渲染 Action

javascript - 如何通过单击 react 中的更新按钮来更新下拉列表

javascript - 从 html 输入值调用数组

java - 如何以逗号分割字符串但保留空格?

java - 无法使用 hasNext 跳出循环

c - 使用 C 返回数组

javascript - Repeater 中的自定义 Angular 图像指令导致 404