JS数组元素的重新组合(两两组合,三三组合........)
代码:
var context = 'a,b,c,d,e,f,g';
var contexts=context .split(','); //把context 按“,”拆分成数组
for (var a = []; a.push([]) < contexts.length;) ;
var b = Math.pow(2, contexts.length) - 1;
for (var i = 1; i <= b; i++) {
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);
结果:
1. 0: (7) ["a", "b", "c", "d", "e", "f", "g"]//⼀个
2. 1: (21) ["ab", "ac", "bc", "ad", "bd", "cd", "ae", "be", "ce", "de", "af", "bf", "cf", "df", "ef", "ag", "bg", "cg", "dg", "eg", "fg"]//两两组合
3. 2: (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",
4. 3: (35) ["abcd", "abce", "abde", "acde", "bcde", "abcf", "abdf", "acdf", "bcdf", "abef", "acef", "bcef", "adef", "bdef", "cdef", "abcg", "abdg", "acdg", "bcdg", "abeg", "aceg", "bceg", "adeg
5. 4: (21) ["abcde", "abcdf", "abcef", "abdef", "acdef", "bcdef", "abcdg", "abceg", "abdeg", "acdeg", "bcdeg", "abcfg", "abdfg", "acdfg", "bcdfg", "abefg", "acefg", "bcefg", "adefg", "bdef
6. 5: (7) ["abcdef", "abcdeg", "abcdfg", "abcefg", "abdefg", "acdefg", "bcdefg"]
javascript全局数组7. 6: ["abcdefg"]
输出的组合数组中不会出现重复的元素。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论