var str = 'abcdefgaddda';
var arr = str.split(''); //將字符串轉為數組
var newArr = []; //聲明一個數組保存去重后的字符
var numArr = []; //聲明一個數組保存字符對應的個數
arr.forEach(function(element,index,array){
var index1 = newArr.indexOf(element); //獲取當前元素在去重數組中的索引,如果存在則大于等于0,不存在則為-1
if(index1==-1){
newArr.push(element); //判斷去重數組里沒有當前元素,所以往數組里面追加
numArr.push(1); //同步更新個數組對應的字符個數,剛追加進去都為1
}else{
numArr[index1]++; //如果當前元素已存在,則更新個數數組對應的字符個數自增1
}
})
console.log(arr,newArr,numArr);
//["a", "b", "c", "d", "e", "f", "g", "a", "d", "d", "d", "a"] 原字符數組
//["a", "b", "c", "d", "e", "f", "g"] 去重后的字符的數組
//[3, 1, 1, 4, 1, 1, 1] 去重后的字符數組對應的個數數組
//得到去重后的字符數組及對應的字符個數后,找個數最大的數及對應的字符
function sortNumber(a,b){
return b-a; //規定排序規則
}
var numArr1 = [].concat(numArr);
//創建一個新數組并連接原數組,這樣改變原數組才不會影響復制后的數組
numArr1.sort(sortNumber); //將每個字符的個數從大到小排序
var maxNum = numArr1[0]; //獲取最大個數
var index = numArr.indexOf(maxNum); //最大個數對應原數組的位置
var maxStr = newArr[index]; //根據最大個數的位置找到出現次數最多的字符
console.log('字符串"'+str+'",'+maxStr+'出現次數最多,次數為'+maxNum);
利用對象的方法進行計算
var str = 'abcdefgaddda';
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)]++;
}
};
var iMax = 0;
var iIndex = '';
for(var i in json){
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
console.log('出現次數最多的是:'+iIndex+'出現'+iMax+'次');