1.约瑟夫环实现
1 //附有调试 2 function joseph(n,p){ 3 var arr=[]; 4 for(var i=0;i<n;i++){ 5 arr.push(i); 6 } 7 debugger; 8 var flag=0; 9 var outnum=0; 10 while(arr.length>1){ 11 //定义到里面 下次外层循环,数组长度已改变,定义到外面的话会死循环,浏览器卡死 12 var len=arr.length; 13 for(var i=0;i<len;i++){ 14 flag++; 15 if(flag==p){ 16 flag=0; 17 //自行脑补 18 arr.splice(i-outnum,1); 19 outnum++; 20 } 21 } 22 } 23 return arr[0]; 24 } 25 //IE8以下不支持console.log() 26 if(window.console){ 27 console.log(joseph(20,3)); 28 } 29 else{ 30 window.console={ 31 log:function(){}, 32 happentime:function(){} 33 //对象字面量方式自行构建 34 } 35 }
2.斐波那契数列实现
1 1 类似数列:1,1,2,3,5,8,13,21。。。。。 2 2 3 3 function ftbn(n){ 4 4 if(n=1||n=2){ 5 5 return 1; 6 6 } 7 7 else 8 8 { 9 9 return ftbn(n-1)+ftbn(n-2); 10 10 } 11 11 }
3.编写insertAfter
1 function insertAfter(newElement,targetElement){ 2 3 var parent=targetElement.parentNode; 4 5 if(parent.lastChild==targetElement){ 6 7 targetElement.appendChild(newElement); 8 9 } 10 11 else{ 12 13 parent.insertBefore(newElement,targetElement.nextSibling); 14 15 } 16 17 }
4.数组去重
1 var ss=[1,2,3,3,44,55,55,77,2,3,1]; 2 function decode2(){ 3 var arry={}; 4 var index=0; 5 var ss2=[]; 6 var len=ss.length; 7 for(var i=0;i<len;i++){ 8 if(arry[ss[i]]==undefined){ 9 10 arry[ss[i]]=1; 11 ss2[index++]=ss[i]; 12 } 13 else if(arry[ss[i]==1]){continue;} 14 } 15 return ss2 16 } 17 decode2();
5.实现一个函数,判断一个字符串内出现最多次的字符,并统计这个字符
1 var s="helloworld"; 2 function countStr(str){ 3 var len=str.length; 4 var obj={}; 5 for(var i=0;i<len;i++){ 6 var k=str.charAt(i); 7 if(obj[k]){ 8 obj[k]++; 9 } 10 else 11 { 12 obj[k]=1; 13 } 14 } 15 var m=0,i=null; 16 for(var b in obj){ 17 if(obj[b]>m){ 18 m=obj[b]; 19 i=b; 20 } 21 } 22 return i+":"+m; 23 } countStr(s);