js前端-vue3合集

js关于字符串的面试题

2020-04-26  本文已影响0人  文菇凉666

1、驼峰转换

<script>

    /*

        var s1 = "get-element-by-id"

        转化为 getElementById

    */

    //第一种方式

    functionchange(str){

        vararr=str.split("-");

        for(vari=1;i<=arr.length-1;i++){

            arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);

        }

        returnarr.join("")

    }

    vars1="get-element-by-id";

    console.log(change(s1))

    //第二种方式

    functionfun(str){

        returnstr.replace(/-\w/g,function(s){

            returns.slice(1).toUpperCase()

        })

    }

    console.log(fun(s1))

</script>

2、解析url的params为对象

<script>

/*

    let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';

结果

    { user: 'anonymous',

    id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型

    city: '北京', // 中文需解码

    enabled: true, // 未指定值得 key 约定为 true

    }

*/

    functionchange(url){

        vararr=url.split("?")

        vararr0=arr[1].split("&")

        //定义一个新对象

        varobj={}

        //遍历arr0

        arr0.forEach((item,key)=>{

            vararrobj=item.split("=")

            if(arrobj[1]){

                arrobj[1]=decodeURIComponent(arrobj[1])

                //获取到对象所有的键

                varkeys=Object.keys(obj);

                //console.log(keys)

                //存放数据之前应该检测是否存在键值

                varindex=keys.indexOf(arrobj[0]);

                if(index==-1){

                    //直接存入

                    obj[arrobj[0]]=arrobj[1];

                }else{

                    //如果存在情况下 我们要把之前的值拿到 然后拼上现在的值 做成一个数组放里面

                    varstr=(obj[keys[index]]+","+arrobj[1]).split(",")

                    //var newarr=[obj[keys[index]],arrobj[1]];

                    obj[arrobj[0]]=str;

                }

            }else{

                obj[arrobj[0]]=true;

            }

        })

        console.log(obj)

    }

    leturl='http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled&user=zhangxiaosan&id=789&id=112&flag=false';

    change(url)

</script>

查找字符串中出现最多的字符和个数

例: abbcccddddd -> 字符最多的是d,出现了5次

<script>

    functionmore(str){

        //第一步  给它转数组

        vararr=str.split("");

        //定义一个对象  {字符:次数}

        varobj={}

        for(vari=0;i<=arr.length-1;i++){

            if(obj[arr[i]]){

                obj[arr[i]]++

            }else{

                obj[arr[i]]=1

            }

        }

        //寻找对象里面的最大值

        varmax=1;

        vark;

        //遍历对象  判断  如果对象的值大于max 给max重新赋值

        for(variinobj){

            if(obj[i]>max){

                max=obj[i]

                k=i;

            }

        }

        return"出现次数最多的字符是"+k+"出现的次数为"+max;

    }

    letstr="abcabcabcbbbbbbbbbbccccc";

    console.log(more(str))

</script>

实现千隔符号

// 保留三位小数 parseToMoney(1234.56); // return '1,234.56' parseToMoney(123456789); // return '123,456,789' parseToMoney(1087654.321); // return '1,087,654.321'

<script>

    varnum=1234567

    varnum1=12345678.789

    functionchange(number){

        //用.分割为小数和整数

        vararr=number.toString().split(".")

        //把arr[0]转换为数组并且翻转

        vararr1=arr[0].split("").reverse();

        //定义一个新数组用来存放改变后的数据

        varnewarr=[]

        arr1.forEach((item,key)=>{

            if(key%3==0&&key!=0){

                newarr.push(",")

            }

            newarr.push(item)

        })

        varnewstr=newarr.reverse().join("")

        if(arr[1]){

            returnnewstr+"."+arr[1]

        }else{

            returnnewstr;

        }

    }

    console.log(change(num))

    console.log(change(num1))

</script>

上一篇 下一篇

猜你喜欢

热点阅读