for(var i=0;i<5;i++){
var firstNo=i;
for(var j=0;j<5;j++){
if(j==i)continue;
var secondNo=j;
for(var k=0;k<5;k++){
if(j==k||i==k)continue;
var thirdNo=k;alert(firstNo +" "+secondNo+" "+thirdNo);
}
}
}
firstNo 是第一个数
secondNo 是第二个数
thirdNo 是第三个数
var firstNo=i;
for(var j=0;j<5;j++){
if(j==i)continue;
var secondNo=j;
for(var k=0;k<5;k++){
if(j==k||i==k)continue;
var thirdNo=k;alert(firstNo +" "+secondNo+" "+thirdNo);
}
}
}
firstNo 是第一个数
secondNo 是第二个数
thirdNo 是第三个数
var str1 = [1,2,3,4,5];
var str2 = [];
str2[0] = [str1[0],str1[1],str1[2]],
str2[1] = [str1[0],str1[1],str1[3]],
str2[2] = [str1[0],str1[1],str1[4]],
str2[3] = [str1[0],str1[2],str1[3]],
str2[4] = [str1[0],str1[2],str1[4]],
str2[5] = [str1[0],str1[3],str1[4]],
str2[6] = [str1[1],str1[2],str1[3]],
str2[7] = [str1[1],str1[2],str1[4]],
str2[8] = [str1[1],str1[3],str1[4]],
str2[9] = [str1[2],str1[3],str1[4]];
console.log(str2);对于小数组固定的分组,这样分是性能最优的,这样就只是执行了十个赋值语句如果你用三个for语句循环,循环的次数,最小都比10大。算法,只是因为因为个数或者什么的,不固定,只能用一些计算规则去处理,你如果个数是固定的,最后的结果也是固定的,那么就直接人为的以赋值语句的形式给出就行了。而且,这样做,比你花时间去写一个算法要节省很多时间吧,关键还是,这样的性能最好啊。在这个时候,不管是对自己的时间,还是对计算式的执行时间,都有好处,为啥还要去浪费时间搞一个算法呢
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function com(){
var s = eval(document.getElementById('s').value);
var n = document.getElementById('n').value;
var r = document.getElementById('r');
r.innerHTML = "";
for (var i=0;i<Math.pow(2, s.length);i++){
var a = 0;
var b = "";
for (var j=0;j<s.length;j++){
if (i>>j&1){
a++;
b += s[j];
}
}
if (a==n){
r.innerHTML += (b+"<br/>");
}
}
}
</script>
</head>
<body>
数据:<input name="s" size="30" value="[1,2,3,4,5]">
取值量:<input name="n" size="2" value="3"/>
<button onclick="com()">计算</button>
<div id="r"></div>
</body>
</html>