我正在尝试将数组中的项目与它下面的每个项目组合起来。它应该制作一组当前字符和它下面的每个字符,并迭代地遍历数组。例如,如果我有这样一个数组:
var myArray = ['A','B','C','D']
我想要这样的输出:
AB AC AD BC BD CD
我的代码让我接近了,但我很难弄清楚其余部分。这是我目前所拥有的:
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)
function recurse_function(string_val, count) {
if ((myArray.length - count) == 0) {
return string_val;
} else {
string_val += myArray[count]
sql_parts.push(string_val)
recurse_function(string_val, count + 1)
}
}
但这会产生:
["A", "AB", "ABC", "ABCD", "B", "BC", "BCD", "C", "CD", "D"]
最佳答案
这是一种解决方案:
- 定义递归函数以采用数组和一个空列表来存储组合
- 基本条件是数组为空或只有一个元素
- 否则,移除第一个元素“start”
- 遍历数组以存储其与以下元素的组合
- 再次循环更新数组和组合
function recurse_function(array, combinations = []) {
if(array.length <= 1) return combinations;
const start = array.shift();
for(let i = 0; i < array.length; i++) combinations.push(`${start}${array[i]}`);
return recurse_function(array, combinations);
}
console.log( recurse_function(['A','B','C','D']) );
关于javascript - 将数组的每个元素与其后的元素组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68975034/