JS中获取字符串中出现次数最多的字母,常用方法

(1)数组+对象

    <script >
    var str = 'aafcbad';
    var obj = {};
    var arr = [];
    var letter;
    for(var i = 0,len = str.length;i<len;i++){
            letter = str[i];
        if(!obj[letter]){   // 第一次放进去
            obj[letter] = 1;
        }else{  
            obj[letter]++;
            }
    }
    var max_key,max_num=0;
    for(key in obj){
        if(max_num <obj[key]){
            max_num = obj[key];
            max_key = key;
        }
    }
        document.write('字母:'+max_key+' 次数:'+max_num);

</script>

(2)正则

<script> 
 var str = 'aaabbbccck'; 
 var arr = str.split('');   // 转换为数组
 arr.sort();    // 对数组进行排序
 str = arr.join('');    // 转换为字符串
 var re = /(\w)\1+/g;   // 将相同的内容分割为一组
 var value = ''; 
 var num = 0; 
 str.replace(re,function($0,$1){   // replace 字符串替换  re规定字符串要替换的模式  $0父级,$1 第一个孩子
    if($0.length > num){ 
        num = $0.length; 
        value = $1; 
    } 
 }); 
 alert('最多的字符:'+value+',个数:'+num);  
 </script> 

(4)JSON对象

<script type="text/javascript">
    var str = 'aaabbbvvvk';
    var json = {}; //遍历str拆解其中的每一个字符将其某个字符的值及出现的个数拿出来作为json的kv
   for (var i = 0; i < str.length; i++) {
      //判断json中是否有当前str的值 
     if (!json[str.charAt(i)]) {
          //如果不存在  就将当前值添加到json中去
          json[str.charAt(i)] = 1;
     } else {
        //else的话就让数组中已有的当前值的index值++;
        json[str.charAt(i)]++;
      }
   }
    //存储出现次数最多的值和次数
    var number = '';
    var num=0;
    //遍历json   使用打擂算法统计需要的值
    for (var i in json) {
    //如果当前项大于下一项
    if (json[i]>num) {
        //就让当前值更改为出现最多次数的值
         num = json[i];
         number = i;
      }
   }
 //最终打印出现最多的值以及出现的次数
 alert('出现最多的值是'+number+'出现次数为'+num);
         </script>

(4)数组

 <script>
        var str="dcbaaaaaaaa";
        var arr=str.split("");  // 转换为数组
        arr=arr.sort(); // 排序
        var n=1;    // 记录出现次数
        var arr1=[];    
        var maxmore="";
        for(var i=0;i<arr.length;i++){
            if(arr[i]===arr[i+1]){
                maxmore=arr[i];
                n++;
            }
            else{
                arr1[n]=maxmore;
                n=1
            }
        }
        console.log('最多的字母'+maxmore);
        console.log('最多的字母次数'+ (arr1.length-1))
</script>
注意:

以上几种使用以上几种方法时,被检测字符串中若出现个数相同的内容,仅能输出一个。

猜你喜欢

转载自blog.csdn.net/weixin_42331327/article/details/80951163