JS中獲取字串中出現次數最多的字母,常用方法
阿新 • • 發佈:2019-01-08
(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>
注意:
以上幾種使用以上幾種方法時,被檢測字串中若出現個數相同的內容,僅能輸出一個。