js经典算法

偶尔善良 提交于 2020-01-12 08:40:01

1:检测100以内的素数

function sushu(num){
        for(var i=2;i<=num;i++){
            //当前的数,是不是素数
            var isactive=false;
            for(var k=2;k<i;k++){
                if(i%k==0){
                    isactive=true;
                }
            }
            if(! isactive){
                console.log(i);
            }
        }
    }
    sushu(100);

2:将1000000.11转换为rmb的形式

 var n=1000000.11;
    function rmb(price){
        //考虑小数点之前的都能拿到
        price=price.toString();
        var xiaoshu=price.split(".")[1];
        if(xiaoshu==undefined){
            xiaoshu="";
        }
        else{
            xiaoshu="."+xiaoshu;
        }
        var intnum=price.split(".")[0].split("").reverse().join("");
        console.log(intnum);
        //遍历位数
        var str="";
        var snum=intnum.length%3;
        for(var i=1;i<intnum.length;i++){
            if(i%3==0&&i!=intnum.length){
                str+=intnum.substring(i-3,i)+",";
            }
            if(i%3==0&&i==intnum.length){
                str+=intnum.substring(i-3,i);
            }
        }
        if(snum){
            str+=intnum.substr(intnum.length-snum,snum);//substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符
            //stringObject.substr(start,length);
        }
        console.log(str.split("").reverse().join("")+xiaoshu);
    }
    rmb(n);

3:字符串反转

var str="I love my son";
    console.log(str.split(" ").reverse().join(" ").split("").reverse().join(""));
    //split()为将字符串分割为数组
    //reverse为数组之内的方法,用于反转数组

4:将字符串转化为驼峰规则

 var str="xiaoshuo-ss-sfff-fe";
    function f1(s){
        var st= s.split("-");
        var arr=st.map(function(val,index){
            return val.charAt(0).toUpperCase()+val.slice(1,val.length);
        });
        arr.join("-");
        console.log(arr);
    }
    f1(str);

5:数组去重

 var arr=[1,2,3,1,2,3,3,5,6];
    function f2(num){
        //常规操作
        var array=[];
        for(var i=0;i<num.length;i++){
            if(array.indexOf(num[i]==-1){
                array.push(num[i]);
            }
        }
        console.log(array);
    }
    f2(arr);

6:字符串去重

var str="aaabbbbbbbaacc";
   function f4(num){
        var array=num.split("");
        var old=0;
        var arr=[];
        for(var i=0;i<array.length;i++){
            var count=1;
            for(var k=i+1;k<array.length;k++){
                if(array[i]==array[k]){
                    //删除相等的
                    array.splice(k,1);
                    count++;
                    k--;
                }
            }
            arr.push([array[i],count]);
        }
        //找出最大值
        var max=0;//个数
        var str="";//字母
        arr.map(function(v,index){
            if(v[1]>max){
                max=v[1];
                str=v[0];
            }
        });
        console.log(str,max);
    }
    f4(str);

7:检测数组的类型方法

 console.log(Array.isArray(a));

8:将二维数组转化为一维数组

 var arr=[[9,12],[1,2],1,2,3,[8,9]];
     function f5(num){
         var a=[];
         if(!num instanceof Array){
             return;
         }
         for(var i=0;i<num.length;i++){
             if(num[i] instanceof Array){
                 f5(num[i]);
             } else{
                 a.push(num[i]);
             }
         }
         console.log(a);
     }
     f5(arr);

9:报数游戏(约瑟夫环问题):
编号1-100的一百个人围成一圈,以123123的方式进行报数,报至3时进行出圈。

function yuesefu(n,k,i){
        if(i==1){
            return(n+k-1)%n;
        }
        else{
            return(yuesefu(n-1,k,i-1)+k)%n;
        }
    }
    for(var i=1;i<=100;i++){
        console.log("第"+i+"次出环,下标为:"+yuesefu(100,3,i));
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!