JavaScript/js实现数组中所有元素各种数量组合字符串的生成

简介: JavaScript/js实现数组中所有元素各种数量组合字符串的生成
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']

 


相关文章
|
3天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
17 3
|
16天前
|
存储 JavaScript 索引
JS中数组的相关方法介绍
JS中数组的相关方法介绍
|
16天前
|
JavaScript 前端开发 索引
JavaScript中与字符串相关的方法
JavaScript中与字符串相关的方法
|
1天前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
12 4
|
4天前
|
JavaScript 前端开发
js开发:请解释this关键字在JavaScript中的用法。
【4月更文挑战第23天】JavaScript的this关键字根据执行环境指向不同对象:全局中指向全局对象(如window),普通函数中默认指向全局对象,作为方法调用时指向调用对象;构造函数中指向新实例,箭头函数继承所在上下文的this。可通过call、apply、bind方法显式改变this指向。
7 1
|
9天前
|
JavaScript 前端开发
js字符串拼接
js字符串拼接
|
9天前
|
JavaScript 前端开发 索引
JavaScript 数组中的增、删、改、查
JavaScript 数组中的增、删、改、查
|
10天前
|
JavaScript 前端开发
js怎么删除html元素
js怎么删除html元素
23 10
|
10天前
|
JavaScript 前端开发
js添加、删除、替换或插入元素。
js添加、删除、替换或插入元素。
8 0