JS数组元素的重新组合(两两组合,三三组合........)

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']
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值