首页 > 代码库 > 程序的优化问题
程序的优化问题
有这样一个问题,有a,b,c,d四个字母,每当刷新页面时会以随机的顺序出现,比如a,d,b,c和b,d,c,a。
我当时的解决方案为:
1 <script type="text/javascript"> 2 var str1; 3 var str=[]; 4 var flag1=true; 5 var flag2=true; 6 var flag3=true; 7 var flag4=true; 8 do{ 9 var num=parseInt(Math.round(Math.random()*(4-1))+1);10 if(num==1&&flag1){11 str[str.length]="a";12 flag1=false;13 }else if(num==2&&flag2){14 str[str.length]="b";15 flag2=false;16 }else if(num==3&&flag3){17 str[str.length]="c";18 flag3=false;19 }else if(num==4&&flag4){20 str[str.length]="d";21 flag4=false;22 }23 }while(flag1||flag2||flag3||flag4)24 str1=str[0]+str[1]+str[2]+str[3];25 document.write(str1);26 </script>
不过这样写有着很明显的弊端,那就是下次如果想换一些字母进行输出时,必须将程序进行一次大的更改才能继续进行应用,这样做不利于重复使用
下面这种方法就很好的解决了这个问题,当想再次调用时,只需将数组arr中的值进行更改就可以了
1 <script type="text/javascript"> 2 var arr=["a","b","c","d"]; 3 function changestr(){ 4 var newArry=[]; 5 var temp=[];//新创建的两个数组 6 for(var p in arr){ 7 temp[p]=arr[p];//将原本数组中的值复制给重新定义的数组 8 } 9 for(var i=0;i<arr.length;i++){10 var random=Math.round(Math.random()*(temp.length-1));//产生0~temp数组长度-1的值11 newArry[i]=temp[random];//将temp数组中随机出来的数组值赋给新数组12 temp.splice(random,1);//删除赋给新数组的值,temp数组的长度减一,直到temp中没有值为止13 }14 return newArry15 }16 document.write(Arry=changestr());17 </script>
在我看来,真正好的函数必须做到可重复使用,模块化,和具有良好的封装性。
程序的优化问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。