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

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

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

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

方法一:

var zhixuan = new Array();

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

function arrange(arr,s){

for(var i=0,length=arr.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

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);

 

查看原文