美文网首页
如何实现多维数组的排列组合

如何实现多维数组的排列组合

作者: 辉夜真是太可爱啦 | 来源:发表于2021-05-12 15:26 被阅读0次

    大家都应该逛过淘宝,比方说你要在上面买一台手机,有内存大小 ['16G' , '32G' , '64G' , '128G'],然后颜色 ['黑色' , '白色' , '银色' , '金色'],版本有 ['联通' , '移动' , '电信'],现在,让你算出各种组合情况,可以使用如下这个方法

    function doExchange(arr){
            var len = arr.length;
            // 当数组大于等于2个的时候
            if(len >= 2){
                // 第一个数组的长度
                var len1 = arr[0].length;
                // 第二个数组的长度
                var len2 = arr[1].length;
                // 2个数组产生的组合数
                var lenBoth = len1 * len2;
                //  申明一个新数组,做数据暂存
                var items = new Array(lenBoth);
                // 申明新数组的索引
                var index = 0;
                // 2层嵌套循环,将组合放到新数组中
                for(var i=0; i<len1; i++){
                    for(var j=0; j<len2; j++){
                        items[index] = arr[0][i] +" | "+ arr[1][j];
                        index++;
                    }
                }
                // 将新组合的数组并到原数组中
                var newArr = new Array(len -1);
                for(var i=2;i<arr.length;i++){
                    newArr[i-1] = arr[i];
                }
                newArr[0] = items;
                // 执行回调
                return doExchange(newArr);
            }else{
                return arr[0];
            }
        }
    

    现在让我们来测试下效果

    doExchange([['16G' , '32G' , '64G' , '128G'],['黑色' , '白色' , '银色' , '金色'],['联通' , '移动' , '电信']]);
    

    可以看到效果如下


    image.png

    相关文章

      网友评论

          本文标题:如何实现多维数组的排列组合

          本文链接:https://www.haomeiwen.com/subject/nvuadltx.html