js的组合实现,支持"二维"

来源:互联网 发布:python strip 换行 编辑:程序博客网 时间:2024/06/07 00:30

<script>function combination(array,debug) {/*c   6  a d   71 b e 4 8------------这样结构得到所有组合:1,一个组合的元素最小可是1,最大是列的个数,如示例就是52,每列的每一个元素可以与其它列的任意其中一个元素组合,但是一个列元素只允许出现在一个组合中一次*/var store = [];var combinationOther = function(array, preObj) {//使用前缀与每行中的列任意一个组合var cell;while (cell=array.shift() ) {//得到每列if (''===cell) continue;//空列if ('object' !== typeof cell) cell = [cell];//必须是数组if (!cell.length) continue;//空列for (var cr=0;cr<cell.length;cr++) {//列中的每个数据var cv = cell[cr];//列中当前数if (''===cv) continue;//不处理空串var str = preObj.concat(cv);str=str.sort().reverse();//按大-小排序store.push( str );//把当前组合放入if (array.length) {//后面还有列combinationOther(array.slice(),str.slice());}}}};combinationOther(array,[]);debug&&console.log( '顺序结果:\n',store.join('\n') );store.sort(function(x,y){//按个数排序,多在前var xl='object'===typeof x ?x.length:1;var yl='object'===typeof y ?y.length:1;var r = 0;if (xl<yl) r=1;//倒过来else if (xl>yl) r = -1;//倒过来else if(xl===yl) {if (x<y) r=1;else if (x>y)r=-1;else r=0;}return r;//注意倒过来了});debug&&console.log( '按个数大小排序结果:\n',store.join('\n') );return store;}var data = [1,2,3];combination(data,1);var data = [1,2,3,['a','b','c'],4,['g','lllll','pppppp','uuuuu']];combination(data,1);</script>





结果




顺序结果:
 1
2,1
3,2,1
3,1
2
3,2
3 s.htm:33
按个数大小排序结果:
 3,2,1
3,2
3,1
2,1
3
2
1 s.htm:49
顺序结果:
 1
2,1
3,2,1
a,3,2,1
a,4,3,2,1
g,a,4,3,2,1
lllll,a,4,3,2,1
pppppp,a,4,3,2,1
uuuuu,a,4,3,2,1
g,a,3,2,1
lllll,a,3,2,1
pppppp,a,3,2,1
uuuuu,a,3,2,1
b,3,2,1
b,4,3,2,1
g,b,4,3,2,1
lllll,b,4,3,2,1
pppppp,b,4,3,2,1
uuuuu,b,4,3,2,1
g,b,3,2,1
lllll,b,3,2,1
pppppp,b,3,2,1
uuuuu,b,3,2,1
c,3,2,1
c,4,3,2,1
g,c,4,3,2,1
lllll,c,4,3,2,1
pppppp,c,4,3,2,1
uuuuu,c,4,3,2,1
g,c,3,2,1
lllll,c,3,2,1
pppppp,c,3,2,1
uuuuu,c,3,2,1
4,3,2,1
g,4,3,2,1
lllll,4,3,2,1
pppppp,4,3,2,1
uuuuu,4,3,2,1
g,3,2,1
lllll,3,2,1
pppppp,3,2,1
uuuuu,3,2,1
a,2,1
a,4,2,1
g,a,4,2,1
lllll,a,4,2,1
pppppp,a,4,2,1
uuuuu,a,4,2,1
g,a,2,1
lllll,a,2,1
pppppp,a,2,1
uuuuu,a,2,1
b,2,1
b,4,2,1
g,b,4,2,1
lllll,b,4,2,1
pppppp,b,4,2,1
uuuuu,b,4,2,1
g,b,2,1
lllll,b,2,1
pppppp,b,2,1
uuuuu,b,2,1
c,2,1
c,4,2,1
g,c,4,2,1
lllll,c,4,2,1
pppppp,c,4,2,1
uuuuu,c,4,2,1
g,c,2,1
lllll,c,2,1
pppppp,c,2,1
uuuuu,c,2,1
4,2,1
g,4,2,1
lllll,4,2,1
pppppp,4,2,1
uuuuu,4,2,1
g,2,1
lllll,2,1
pppppp,2,1
uuuuu,2,1
3,1
a,3,1
a,4,3,1
g,a,4,3,1
lllll,a,4,3,1
pppppp,a,4,3,1
uuuuu,a,4,3,1
g,a,3,1
lllll,a,3,1
pppppp,a,3,1
uuuuu,a,3,1
b,3,1
b,4,3,1
g,b,4,3,1
lllll,b,4,3,1
pppppp,b,4,3,1
uuuuu,b,4,3,1
g,b,3,1
lllll,b,3,1
pppppp,b,3,1
uuuuu,b,3,1
c,3,1
c,4,3,1
g,c,4,3,1
lllll,c,4,3,1
pppppp,c,4,3,1
uuuuu,c,4,3,1
g,c,3,1
lllll,c,3,1
pppppp,c,3,1
uuuuu,c,3,1
4,3,1
g,4,3,1
lllll,4,3,1
pppppp,4,3,1
uuuuu,4,3,1
g,3,1
lllll,3,1
pppppp,3,1
uuuuu,3,1
a,1
a,4,1
g,a,4,1
lllll,a,4,1
pppppp,a,4,1
uuuuu,a,4,1
g,a,1
lllll,a,1
pppppp,a,1
uuuuu,a,1
b,1
b,4,1
g,b,4,1
lllll,b,4,1
pppppp,b,4,1
uuuuu,b,4,1
g,b,1
lllll,b,1
pppppp,b,1
uuuuu,b,1
c,1
c,4,1
g,c,4,1
lllll,c,4,1
pppppp,c,4,1
uuuuu,c,4,1
g,c,1
lllll,c,1
pppppp,c,1
uuuuu,c,1
4,1
g,4,1
lllll,4,1
pppppp,4,1
uuuuu,4,1
g,1
lllll,1
pppppp,1
uuuuu,1
2
3,2
a,3,2
a,4,3,2
g,a,4,3,2
lllll,a,4,3,2
pppppp,a,4,3,2
uuuuu,a,4,3,2
g,a,3,2
lllll,a,3,2
pppppp,a,3,2
uuuuu,a,3,2
b,3,2
b,4,3,2
g,b,4,3,2
lllll,b,4,3,2
pppppp,b,4,3,2
uuuuu,b,4,3,2
g,b,3,2
lllll,b,3,2
pppppp,b,3,2
uuuuu,b,3,2
c,3,2
c,4,3,2
g,c,4,3,2
lllll,c,4,3,2
pppppp,c,4,3,2
uuuuu,c,4,3,2
g,c,3,2
lllll,c,3,2
pppppp,c,3,2
uuuuu,c,3,2
4,3,2
g,4,3,2
lllll,4,3,2
pppppp,4,3,2
uuuuu,4,3,2
g,3,2
lllll,3,2
pppppp,3,2
uuuuu,3,2
a,2
a,4,2
g,a,4,2
lllll,a,4,2
pppppp,a,4,2
uuuuu,a,4,2
g,a,2
lllll,a,2
pppppp,a,2
uuuuu,a,2
b,2
b,4,2
g,b,4,2
lllll,b,4,2
pppppp,b,4,2
uuuuu,b,4,2
g,b,2
lllll,b,2
pppppp,b,2
uuuuu,b,2
c,2
c,4,2
g,c,4,2
lllll,c,4,2
pppppp,c,4,2
uuuuu,c,4,2
g,c,2
lllll,c,2
pppppp,c,2
uuuuu,c,2
4,2
g,4,2
lllll,4,2
pppppp,4,2
uuuuu,4,2
g,2
lllll,2
pppppp,2
uuuuu,2
3
a,3
a,4,3
g,a,4,3
lllll,a,4,3
pppppp,a,4,3
uuuuu,a,4,3
g,a,3
lllll,a,3
pppppp,a,3
uuuuu,a,3
b,3
b,4,3
g,b,4,3
lllll,b,4,3
pppppp,b,4,3
uuuuu,b,4,3
g,b,3
lllll,b,3
pppppp,b,3
uuuuu,b,3
c,3
c,4,3
g,c,4,3
lllll,c,4,3
pppppp,c,4,3
uuuuu,c,4,3
g,c,3
lllll,c,3
pppppp,c,3
uuuuu,c,3
4,3
g,4,3
lllll,4,3
pppppp,4,3
uuuuu,4,3
g,3
lllll,3
pppppp,3
uuuuu,3
a
a,4
g,a,4
lllll,a,4
pppppp,a,4
uuuuu,a,4
g,a
lllll,a
pppppp,a
uuuuu,a
b
b,4
g,b,4
lllll,b,4
pppppp,b,4
uuuuu,b,4
g,b
lllll,b
pppppp,b
uuuuu,b
c
c,4
g,c,4
lllll,c,4
pppppp,c,4
uuuuu,c,4
g,c
lllll,c
pppppp,c
uuuuu,c
4
g,4
lllll,4
pppppp,4
uuuuu,4
g
lllll
pppppp
uuuuu s.htm:33
按个数大小排序结果:
 uuuuu,c,4,3,2,1
uuuuu,b,4,3,2,1
uuuuu,a,4,3,2,1
pppppp,c,4,3,2,1
pppppp,b,4,3,2,1
pppppp,a,4,3,2,1
lllll,c,4,3,2,1
lllll,b,4,3,2,1
lllll,a,4,3,2,1
g,c,4,3,2,1
g,b,4,3,2,1
g,a,4,3,2,1
uuuuu,c,4,3,2
uuuuu,c,4,3,1
uuuuu,c,4,2,1
uuuuu,c,3,2,1
uuuuu,b,4,3,2
uuuuu,b,4,3,1
uuuuu,b,4,2,1
uuuuu,b,3,2,1
uuuuu,a,4,3,2
uuuuu,a,4,3,1
uuuuu,a,4,2,1
uuuuu,a,3,2,1
uuuuu,4,3,2,1
pppppp,c,4,3,2
pppppp,c,4,3,1
pppppp,c,4,2,1
pppppp,c,3,2,1
pppppp,b,4,3,2
pppppp,b,4,3,1
pppppp,b,4,2,1
pppppp,b,3,2,1
pppppp,a,4,3,2
pppppp,a,4,3,1
pppppp,a,4,2,1
pppppp,a,3,2,1
pppppp,4,3,2,1
lllll,c,4,3,2
lllll,c,4,3,1
lllll,c,4,2,1
lllll,c,3,2,1
lllll,b,4,3,2
lllll,b,4,3,1
lllll,b,4,2,1
lllll,b,3,2,1
lllll,a,4,3,2
lllll,a,4,3,1
lllll,a,4,2,1
lllll,a,3,2,1
lllll,4,3,2,1
g,c,4,3,2
g,c,4,3,1
g,c,4,2,1
g,c,3,2,1
g,b,4,3,2
g,b,4,3,1
g,b,4,2,1
g,b,3,2,1
g,a,4,3,2
g,a,4,3,1
g,a,4,2,1
g,a,3,2,1
g,4,3,2,1
c,4,3,2,1
b,4,3,2,1
a,4,3,2,1
uuuuu,c,4,3
uuuuu,c,4,2
uuuuu,c,4,1
uuuuu,c,3,2
uuuuu,c,3,1
uuuuu,c,2,1
uuuuu,b,4,3
uuuuu,b,4,2
uuuuu,b,4,1
uuuuu,b,3,2
uuuuu,b,3,1
uuuuu,b,2,1
uuuuu,a,4,3
uuuuu,a,4,2
uuuuu,a,4,1
uuuuu,a,3,2
uuuuu,a,3,1
uuuuu,a,2,1
uuuuu,4,3,2
uuuuu,4,3,1
uuuuu,4,2,1
uuuuu,3,2,1
pppppp,c,4,3
pppppp,c,4,2
pppppp,c,4,1
pppppp,c,3,2
pppppp,c,3,1
pppppp,c,2,1
pppppp,b,4,3
pppppp,b,4,2
pppppp,b,4,1
pppppp,b,3,2
pppppp,b,3,1
pppppp,b,2,1
pppppp,a,4,3
pppppp,a,4,2
pppppp,a,4,1
pppppp,a,3,2
pppppp,a,3,1
pppppp,a,2,1
pppppp,4,3,2
pppppp,4,3,1
pppppp,4,2,1
pppppp,3,2,1
lllll,c,4,3
lllll,c,4,2
lllll,c,4,1
lllll,c,3,2
lllll,c,3,1
lllll,c,2,1
lllll,b,4,3
lllll,b,4,2
lllll,b,4,1
lllll,b,3,2
lllll,b,3,1
lllll,b,2,1
lllll,a,4,3
lllll,a,4,2
lllll,a,4,1
lllll,a,3,2
lllll,a,3,1
lllll,a,2,1
lllll,4,3,2
lllll,4,3,1
lllll,4,2,1
lllll,3,2,1
g,c,4,3
g,c,4,2
g,c,4,1
g,c,3,2
g,c,3,1
g,c,2,1
g,b,4,3
g,b,4,2
g,b,4,1
g,b,3,2
g,b,3,1
g,b,2,1
g,a,4,3
g,a,4,2
g,a,4,1
g,a,3,2
g,a,3,1
g,a,2,1
g,4,3,2
g,4,3,1
g,4,2,1
g,3,2,1
c,4,3,2
c,4,3,1
c,4,2,1
c,3,2,1
b,4,3,2
b,4,3,1
b,4,2,1
b,3,2,1
a,4,3,2
a,4,3,1
a,4,2,1
a,3,2,1
4,3,2,1
uuuuu,c,4
uuuuu,c,3
uuuuu,c,2
uuuuu,c,1
uuuuu,b,4
uuuuu,b,3
uuuuu,b,2
uuuuu,b,1
uuuuu,a,4
uuuuu,a,3
uuuuu,a,2
uuuuu,a,1
uuuuu,4,3
uuuuu,4,2
uuuuu,4,1
uuuuu,3,2
uuuuu,3,1
uuuuu,2,1
pppppp,c,4
pppppp,c,3
pppppp,c,2
pppppp,c,1
pppppp,b,4
pppppp,b,3
pppppp,b,2
pppppp,b,1
pppppp,a,4
pppppp,a,3
pppppp,a,2
pppppp,a,1
pppppp,4,3
pppppp,4,2
pppppp,4,1
pppppp,3,2
pppppp,3,1
pppppp,2,1
lllll,c,4
lllll,c,3
lllll,c,2
lllll,c,1
lllll,b,4
lllll,b,3
lllll,b,2
lllll,b,1
lllll,a,4
lllll,a,3
lllll,a,2
lllll,a,1
lllll,4,3
lllll,4,2
lllll,4,1
lllll,3,2
lllll,3,1
lllll,2,1
g,c,4
g,c,3
g,c,2
g,c,1
g,b,4
g,b,3
g,b,2
g,b,1
g,a,4
g,a,3
g,a,2
g,a,1
g,4,3
g,4,2
g,4,1
g,3,2
g,3,1
g,2,1
c,4,3
c,4,2
c,4,1
c,3,2
c,3,1
c,2,1
b,4,3
b,4,2
b,4,1
b,3,2
b,3,1
b,2,1
a,4,3
a,4,2
a,4,1
a,3,2
a,3,1
a,2,1
4,3,2
4,3,1
4,2,1
3,2,1
uuuuu,c
uuuuu,b
uuuuu,a
uuuuu,4
uuuuu,3
uuuuu,2
uuuuu,1
pppppp,c
pppppp,b
pppppp,a
pppppp,4
pppppp,3
pppppp,2
pppppp,1
lllll,c
lllll,b
lllll,a
lllll,4
lllll,3
lllll,2
lllll,1
g,c
g,b
g,a
g,4
g,3
g,2
g,1
c,4
c,3
c,2
c,1
b,4
b,3
b,2
b,1
a,4
a,3
a,2
a,1
4,3
4,2
4,1
3,2
3,1
2,1
uuuuu
pppppp
lllll
g
c
b
a
4
3
2
0 0
原创粉丝点击