var context = 'a,b,c,d,e,f,g'
var contexts= context.split(',')
for (var a = []; a.push([]) < contexts.length;) ;
var b = Math.pow(2, contexts.length) - 1
for (var i = 1; i <= b; i++) {
undefined
var c = []
for (var s = i, k = 0; s > 0; s >>= 1, k++) {
if (s & 1 === 1) { c.push(contexts[k]) }
}
a[c.length - 1].push(c.join(''))
}
console.log(a)
打印结果
(7) ['a', 'b', 'c', 'd', 'e', 'f', 'g']
(21) ['ab', 'ac', 'bc', 'ad', 'bd', 'cd', 'ae', 'be', 'ce', 'de', 'af', 'bf', 'cf', 'df', 'ef', 'ag', 'bg', 'cg', 'dg', 'eg', 'fg']
(35) ['abc', 'abd', 'acd', 'bcd', 'abe', 'ace', 'bce', 'ade', 'bde', 'cde', 'abf', 'acf', 'bcf', 'adf', 'bdf', 'cdf', 'aef', 'bef', 'cef', 'def', 'abg', 'acg', 'bcg', 'adg', 'bdg', 'cdg', 'aeg', 'beg', 'ceg', 'deg', 'afg', 'bfg', 'cfg', 'dfg', 'efg']
(35) ['abcd', 'abce', 'abde', 'acde', 'bcde', 'abcf', 'abdf', 'acdf', 'bcdf', 'abef', 'acef', 'bcef', 'adef', 'bdef', 'cdef', 'abcg', 'abdg', 'acdg', 'bcdg', 'abeg', 'aceg', 'bceg', 'adeg', 'bdeg', 'cdeg', 'abfg', 'acfg', 'bcfg', 'adfg', 'bdfg', 'cdfg', 'aefg', 'befg', 'cefg', 'defg']
(21) ['abcde', 'abcdf', 'abcef', 'abdef', 'acdef', 'bcdef', 'abcdg', 'abceg', 'abdeg', 'acdeg', 'bcdeg', 'abcfg', 'abdfg', 'acdfg', 'bcdfg', 'abefg', 'acefg', 'bcefg', 'adefg', 'bdefg', 'cdefg']
(7) ['abcdef', 'abcdeg', 'abcdfg', 'abcefg', 'abdefg', 'acdefg', 'bcdefg']
(1) ['abcdefg']