js交叉排列的组合算法

来源:互联网 发布:亚马逊关键词优化方法 编辑:程序博客网 时间:2024/06/12 20:19

以前项目中有这样的需求,现在记录一下这个类似于染色体排列的数组组合算法。

排列交叉组合

需求就是类似于图中所示,[“a”,”b”,”c”]和[“x”,”z”]能排列出6种组合。

//接受可变长数组参数function Zuhe(){    var heads=arguments[0];      for(var i=1,len=arguments.length;i<len;i++){          if(arguments[i].length){            heads=addNewType(heads,arguments[i]);        }    }      return heads;  };   function addNewType(heads,choices){      var result=[];      for(var i=0,len=heads.length;i<len;i++){          for(var j=0,lenj=choices.length;j<lenj;j++){              result.push(heads[i]+'_'+choices[j]);          }      }      return result;  };  //打印结果的函数function printResult(result){      for(var i=0,len=result.length;i<len;i++){          console.log(result[i]);    }    console.log(result.length);    return result;}

调用

var oR = printResult(Zuhe(["S1","M2","L3"],["R9","B10"],["a1","b2","c3"]));console.log("========================="); printResult(Zuhe(["a1","a2","a3"],["b1"],[],[]));

result:
result

1 0
原创粉丝点击