前端学习笔记之二——找出重复最多的字符

   利用工作的间隙, 昨天做了论坛里的第二个题目,边思考边查询,温习了很多知识,还学习了很多优秀同学提交的作业,有两个同学的作业印象最深。

   题目如下: 

                  

      印象最深的两个作业,看懂它们还真是花了一番功夫的,不过也学到了挺多。

     第一个同学提交的作业,亮点在于灵活运用了split、join属性,简直太聪明了,而且封装了函数,可重用性强。我比较喜欢在理解了别人的代码之后,再一个字一个字敲下来,这样也顺便加深我的理解和记忆。第一个同学的作业,下面是我一个字一个字敲下来的第一个同学的作业: 

<script>
    var str = "aabbddeeeeefdxxxd";
    function maxCharOf(){
        var strClone=str,num=0,char="",arr,length;
        while(strClone.lenth>0){
            arr=strClone.split(strClone[0]);
            length=arr.length-1;
            if(length>num){
                num=length;
                char=strClone[0];
            }else if(length==num){
                char+="&"+strClone[0];
            }
        strClone=arr.join("");
       }
        console.log("重复个数最多的字符是"+char+",个数为"+num);
    }
    maxCharOf(str);
</script>

------------------------------------------------------------------

     还有一位同学的作用使用了正则以及replace()方法,做得也挺不错的。

<script>

     var str = "aabbddeeeeefdxxxd";

     var arr=str.split("");

     str=arr.sort().join("");

     var value="";

     var index=0;

     var reg=/(/w)/1+/g;

     str.replace(reg,function($0,$1){

           if($0.length>index){

                  index=$0.length;

                  value=$1;

           }

     })

     console.log(""重复个数最多的字符是"+value+",个数为"+index");

</script>

 ------------------------------------------------------------------------

      通过琢磨研究两位同学提交的作业,温习了许多旧知识,像字符串和数组间转换的split()、join()方法,还有数字的排序sort()方法。另外还有正则表达式,replace()方法等等,比较深刻的就小结一下:

      1.正则表达式:/g表示全局匹配,/i表示忽略大小写匹配,/s表示匹配空格,/d表示匹配数字,/n表示匹配换行符等,[]表示匹配中括号内任意一个,()指的是一个匹配子项,若干子项交集才是最终匹配项。

            运用正则进行验证的方法有:

                reg.test(str);----返回true或者false;

                str.search(reg);-----返回第一个匹配的字母的下标位置或者-1;

                str.match(reg);-----返回匹配的内容或者null;如果reg不加/g,那么返回匹配结果及每个子项的集合。

            另外还有,查找替换的方法。str.replace(resouce,replacement);----第一个参数可以是字符串或者正则表达式,第二个参数可以是字符串、函数或者特殊字符如$1等等。 用第二个参数替换第一个参数。   

      2. replace()方法的第一个参数可以是一个正则表达式,第二个参数还可以是一个函数,也可以是像$0、$1、$2、$3……这样的特殊字符,这些特殊字符有着特殊的意义。

             $0,指的是匹配成功后的整体结果(如果正则中含/g,那就是这次全局匹配完成之后的整体结果,字符串的形式)。

             $1,匹配成功的第一个子项分组(所谓子项,指的正则表达式中其中一个匹配条件)。

             $2,匹配成功的第二个子项分组

             $3,依次类推,一直到$n。

    

原文地址:https://www.cnblogs.com/vivian2016/p/5802488.html