js实现N个元素的排列组合及存在相同元素的处理方法

js实现N个元素的排列组合及存在相同元素的处理方法

不能有相同的元素,相同号码替换成对应字母处理

方法一:

var zhixuan = new Array();
//不能有相同的元素,相同号码替换成对应字母处理
function arrange(arr,s){
    for(var i=0,length=arr.length; i<length; i++) {
        if(s.length == length - 1) {
            if(s.indexOf(arr[i]) < 0) {
                zhixuan.push(s + arr[i]);
            }
            continue;
        }
        if(s.indexOf(arr[i]) < 0) {
            arrange(arr,s+arr[i]);
        }
    }
}

方法二:

//var arr1 = [1,2,3,3,4]; 不能有相同的,相同号码替换成对应字母处理
function permute(temArr,testArr){
   var permuteArr=[];
   var arr = testArr;
   function innerPermute(temArr){
         for(var i=0,len=arr.length; i<len; i++) {
             if(temArr.length == len - 1) {
                 if(temArr.indexOf(arr[i]) < 0) {
                     permuteArr.push(temArr.concat(arr[i]));
                 }
                 continue;
             }
             if(temArr.indexOf(arr[i]) < 0) {
                 innerPermute(temArr.concat(arr[i]));
             }
        }
    }
    innerPermute(temArr);
    return permuteArr;     
}

相同号码替换对应字母处理方法:

String.prototype.myReplace=function(f,e){
    var reg=new RegExp(f,"g"); 
    return this.replace(reg,e);
}

var nlist = ["0","1","2","3","4","5","6","7","8","9"];
var clist = ["a","b","c","d","e","f","g","h","i","j"];

function replaceCode(number){
    for(var i=0; i<10; i++){
        if(nlist[i] == number){
            return clist[i];
        }
    }
}

使用方法示例:

var arr = [1,2,3,3,4];
//替换相同的数字为对应字母 arr[
3] = replaceCode(arr[3]);
//调用方法一 arrange(arr,
''); //使用方法一的全局变量 var outstr = zhixuan.join(",");
//替换对应的字符串为数字
for(var i=0; i<10; i++){ outstr = outstr.myReplace(clist[i], nlist[i]); }
//输出内容 $(
"#showdiv").html(outstr);

 

posted @ 2021-02-22 05:37  大自然的流风  阅读(920)  评论(0编辑  收藏  举报