假设我们有这个数组:
let a = ["a", "b", "c"]
我需要如下组合:
[["a"], ["b"], ["c"], ["a", "b"], ["a", "c"], ["b", "c"], ["b", "a"], ["c", "a"], ["c","b"], ["a", "b", "c"], ...]
const a = ["a", "b", "c"];
function perm(xs) {
let ret = [];
for (let i = 0; i < xs.length; i = i + 1) {
let rest = perm(xs.slice(0, i).concat(xs.slice(i + 1)));
if (!rest.length) {
ret.push([xs[i]])
} else {
for (let j = 0; j < rest.length; j = j + 1) {
ret.push([xs[i]].concat(rest[j]))
}
}
}
return ret;
}
console.log(perm(a));
随意编辑这个问题,如果这是一个类似的问题,请复制这个问题。强文本
搜索了一段时间后,我发现有一个函数:
function combination(A, comb = [], result = [comb]) {
for (var i = 0; i < A.length; i++)
result = result.concat(combination(A.slice(0, i).concat(A.slice(i + 1)), comb.concat(A[i])));
return result;
}
console.log(combination(["q", "a", "w"]))
你可以用.slice(1, array.length(删除第一个索引