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

如何将数组每个元素与后续所有元素两两组合 修正现有代码输出错误问题

解决方案

问题原因

现有递归逻辑每次拼接新字符后都会直接存入结果数组,且未在拼接出2个字符时终止递归,因此生成了大量单字符、3字符、4字符的多余结果。

方案1:修改现有递归代码

仅保留长度为2的拼接结果,且拼接完成后立刻终止递归,避免生成更长的字符串:

var myArray = ['A', 'B', 'C', 'D']
var sql_parts = []
var string = "";
for (var i = 0; i < myArray.length; i++) {
  recurse_function(string, i)
}
console.log(sql_parts) // 输出 ["AB", "AC", "AD", "BC", "BD", "CD"]

function recurse_function(string_val, count) {
  // 拼接出2个字符时存入结果,终止递归
  if (string_val.length === 2) {
    sql_parts.push(string_val)
    return;
  }
  // 下标越界时直接返回
  if (count >= myArray.length) {
    return;
  }
  string_val += myArray[count]
  recurse_function(string_val, count + 1)
}

方案2:双层循环实现(更推荐)

无需递归,直接让每个元素仅和后方元素配对,天然避免重复组合,逻辑更清晰性能更好:

var myArray = ['A', 'B', 'C', 'D']
var sql_parts = []
// 外层遍历到倒数第二个元素即可
for (var i = 0; i < myArray.length - 1; i++) {
  // 内层从i的下一个元素开始遍历
  for (var j = i + 1; j < myArray.length; j++) {
    sql_parts.push(myArray[i] + myArray[j])
  }
}
console.log(sql_parts) // 输出 ["AB", "AC", "AD", "BC", "BD", "CD"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:06:01