You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从球员列表生成所有3人组合团队?修正现有代码问题

解决3人团队组合生成问题

你的代码问题出在这几点:

  • 只用了两层循环,靠j+1取第三个元素,只能拿到连续相邻的三元组,漏掉了像['a','b','d']这种非连续的组合;
  • 当j遍历到数组最后一个索引时,j+1会超出数组长度,导致第三个元素是undefined;
  • 每次循环都直接覆盖team变量,没有把生成的组合收集起来,最后只能得到最后一次循环的结果。

要生成所有不重复的3人组合,需要用三层嵌套循环,每层的起始索引都比上一层大1,确保每个元素只被选一次,同时用一个数组收集所有组合:

const data = ['a', 'b', 'c', 'd'];
const teams = [];

// 三层循环,每层索引依次递增,避免重复组合
for (let i = 0; i < data.length; i++) {
  for (let j = i + 1; j < data.length; j++) {
    for (let k = j + 1; k < data.length; k++) {
      teams.push([data[i], data[j], data[k]]);
    }
  }
}

// 打印所有组合
teams.forEach(team => console.log(team));

运行这段代码后,就能得到你期望的输出:

['a', 'b', 'c']
['a', 'b', 'd']
['a', 'c', 'd']
['b', 'c', 'd']

逻辑说明:

  • 第一层循环i选第一个元素,范围是整个数组;
  • 第二层循环j从i+1开始,保证选的元素在i之后,不会重复选i对应的元素;
  • 第三层循环k从j+1开始,保证选的元素在j之后,不会重复选i和j对应的元素;
  • 每次生成的组合都push到teams数组里,最后就能收集到所有3人组合。

内容的提问来源于stack exchange,提问作者MouseWarrior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:07:22