1. 程式人生 > >JS中獲取字串中出現次數最多的字母,常用方法

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>
注意:

以上幾種使用以上幾種方法時,被檢測字串中若出現個數相同的內容,僅能輸出一個。