说我有和数组:
var arr = [1,2,3,4];
如何在不重复的情况下获得所有可能的组合?
例如:
// "2,1" wouldn't be valid because it's essentially "1,2"
1
1,2
1,2,3
1,2,3,4
2
2,3
2,3,4
3
3,4
4
答案 0 :(得分:1)
您想要的并非所有可能的组合(subsets,缺少1,3
,1,4
,2,4
),但所有subsequences。通过使用两个嵌套循环来开始和结束序列,您可以轻松地获得这些:
function subsequences(arr) {
var res = [[]];
for (var i=0; i<arr.length; i++)
for (var j=i+1; j<=arr.length; j++)
res.push(arr.slice(i, j));
return res;
}
对于所有可能的子集 - power set - 请参阅this answer。