js 排练组合

chengxu2011 2016-08-07 04:21:15
大神们啊 求帮助 我的问题是
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的数组推导可以实现 但是浏览器不兼容。。。。。

...全文
193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewMoons 2016-08-08
  • 打赏
  • 举报
回复
发完才看见2楼的帖子。 1楼的算法更简洁清晰,且没有用递归,只用了循环。赞!望楼主采纳1楼方案。
NewMoons 2016-08-08
  • 打赏
  • 举报
回复
1、首先这是java版本不是JavaScript板块,你发错地方了。建议重发; 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>
HerveyHall 2016-08-08
  • 打赏
  • 举报
回复
引用 1 楼 hhv_01 的回复:
<html>
<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); //将排列组合的结果显示在<p>元素上
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>
代码写得有点乱,简单地注释了一下
HerveyHall 2016-08-08
  • 打赏
  • 举报
回复
<html>
<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>

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧