大神们啊 求帮助 我的问题是
js 数组的排列 比如说
L1=['a','b','c','d']
L2=['1','2']
那么结果 应该是['a1','a2','b1','b2','c1','c2' ,'d1','d2']
然后 有几个数组 是不固定 也可能是
L1=['a']
L2=['1','2']
L3=['g']
那么结果就是 ['a1g','a2g']
求大神用js写出来 不要用es6.......es6的数组推导可以实现 但是浏览器不兼容。。
js 数组的排列 比如说
L1=['a','b','c','d']
L2=['1','2']
那么结果 应该是['a1','a2','b1','b2','c1','c2' ,'d1','d2']
然后 有几个数组 是不固定 也可能是
L1=['a']
L2=['1','2']
L3=['g']
那么结果就是 ['a1g','a2g']
求大神用js写出来 不要用es6.......es6的数组推导可以实现 但是浏览器不兼容。。
<body>
<p id="abc"></p>
<script>
var L1=["a","b","c","d"];
var L2=["1","2"];
var L3=["e","f"];
var L4=["g","h"];
document.getElementById("abc").innerHTML=permutations(L1,L2,L3,L4);
function permutations(){
var temp=arguments[0];
for(var i=1;i<arguments.length;i++)
temp=addSuffix(temp,arguments[i]);
return temp;
}
function addSuffix(array1,array2){
var temp=new Array();
for(var i=0;i<array1.length;i++)
for(var j=0;j<array2.length;j++)
temp[i*array2.length+j]=array1[i].toString()+array2[j].toString();
return temp;
}</script>
<body>
</html>
2、标题“排练组合” --> “排列组合”
3、貌似得用递归,废话不多说了,上代码。
<html>
<head>
<script type="text/javascript">
function loopToRecursion(input, output, array, j) {
if (j == array.length) {
var str = "";
for (var i = 0; i < array.length; i++) {
if (str.length > 0) {
//如果需要的话在这里可以给每个数组的输出结果加一个分隔符
str = str + "";
}
str = str + input[i][array[i]];
}
output.push(str);
} else {
while (array[j] < input[j].length) {
loopToRecursion(input, output, array, j + 1);
array[j]++;
if (j + 1 < array.length) {
array[j + 1] = 0;
}
}
}
} var intputArray = new Array();
intputArray.push([ "aa", "bb", "cc" ]);
intputArray.push([ "xx", "yy" ]);
intputArray.push([ "11", "22", "33", "44" ]);
intputArray.push([ "$&", "&*%", "@$%", "*_*" ]); document.write("input:<br>");
for ( var j in intputArray) {
var array = intputArray[j];
var str = "";
for ( var i in array) {
if (str.length > 0) {
str = str + ",";
}
str = str + array[i];
}
document.write(" " + str + "<br>");
} document.write("<br>output:<br>");
var tempArray = new Array();
for (var i = 0; i < intputArray.length; i++) {
tempArray.push(0);
} var outputArray = new Array();
loopToRecursion(intputArray, outputArray, tempArray, 0);
for(var i in outputArray){
document.write(" " + outputArray[i] + "<br>");
}
</script>
</head>
<body>
</body>
</html>