function getCombination(arr,min=1) { //min:最低组合数量(默认是1) min<0&&(min=1); let a; for (a = []; a.push([]) < arr.length;); let b = Math.pow(2, arr.length) - 1 for (let i = 1; i <= b; i++) { let c = [] for (let s = i, k = 0; s > 0; s >>= 1, k++) { if (s & 1 === 1) { c.push(arr[k]) } } a[c.length - 1].push(c.join('')) } let r = []; a.forEach((v,i) => { i>=min-1&&(r = r.concat(v)); }); return r; } // getCombination([1,2,3]); // 输出 ['1', '2', '3', '12', '13', '23', '123'] // getCombination(['A','B','C','D']); // 输出 ['A', 'B', 'C', 'D', 'AB', 'AC', 'BC', 'AD', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD', 'ABCD'] // getCombination([1,2,3],2); // 输出 ['12', '13', '23', '123'] // getCombination(['A','B','C','D'],2) // 输出 ['AB', 'AC', 'BC', 'AD', 'BD', 'CD', 'ABC', 'ABD', 'ACD', 'BCD', 'ABCD']