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