想实现在”一堆“数据中筛选出制定的个数作为一组,就需要用排列组合,组合中没有重复的组合,排列中有重复的组合(顺序不一样): 1.组合 function C(arr, num) { var r=[]; (function f(t,a,n) { if (n==0) { return r.push(t); } for (var i=0,l=a.length; i<=l-n; i++) { f(t.concat(a[i]), a.slice(i+1), n-1); } })([],arr,num); return r; } 2.排列 function P(arr, num) { var r=[]; (function f(t,a,n) { if (n==0) { return r.push(t); } for (var i=0,l=a.length; i<l; i++) { f(t.concat(a[i]), a.slice(0,i).concat(a.slice(i+1)), n-1); } })([],arr,num); return r; } 3.使用列子: var r1 = C([1,2,3,4,5],3); //var r1 = C("0123456789".split(""),3); document.write('组合:<ol><li>'+r1.join('</li><li>')+'</li></ol<br/><br/>'); var r2 = P([1,2,3,4,5],3); //var r2 = P("0123456789".split(""),3); document.write('排列:<ol><li>'+r2.join('</li><li>')+'</li></ol>'); 转自:http://www.hjaa.net/?p=145