假设我有三个数组a
,b
和c
。我想从 中获取元素的所有组合,[a,b,c]
但不是。[b,c]
[c]
[a,c]
我的工作递归函数如下,以数组数组为参数[a,b,c]
:
function allPossibleCases(arr) {
if (arr.length === 0) {
return [];
} else if (arr.length === 1) {
return arr[0];
} else {
var result=[];
var allCasesOfRest = allPossibleCases(arr.slice(1));
for (var i = 0; i < arr[0].length; i++) {
for (var c in allCasesOfRest) {
if (allCasesOfRest[c].split("~").length === arr.length-1) {
result.push(arr[0][i]+"~"+allCasesOfRest[c]);
}
result.push(allCasesOfRest[c]);
}
}
return result;
}
};
然后我map
在结果字符串数组上使用.split("~")
函数来获取包含我的组合的数组数组。
我无法弄清楚如何优雅地使递归分层而不allCasesOfRest[c]
在将其推入之前测试result
拆分的长度(拆分结果的数组长度应该是arr.length-1
)。
有任何想法吗 ?