第一种:
str = 'asdasddsfdsfadsfdghdadsdfdgdasd'
str = str.split('');
console.log(str);
var newStr = {};
// 数组去重 和计算出现的次数
str.forEach(function (item) {
if (newStr[item]) {
newStr[item]++;
} else {
newStr[item] = 1;
}
})
var max=0;
var strkey=null;
for(var key in newStr){
if(newStr[key]>max){
max=newStr[key];
strkey=key;
}
}
console.log("最多的字符是" + strkey);
console.log("出现的次数是" + max);
第二种:
// 找一个字符串中出现次数最多的字符
function fun(ee) {
let arr = ee
let list = []
for (var i in arr) {
let arr1 = arr.split('')
var aa = 0
// 封装 递归求单个字符出现的次数
function sum(str, a) {
let b = str.indexOf(a)
if (b == -1) {
return 0;
} else {
aa++
str.splice(0, b + 1)
sum(str, a)
}
return aa
}
list.push(sum(arr1, arr1[i]))
}
// 深拷贝 拷贝一个新数组
let list1 = []
for (var i in list) {
if (list.hasOwnProperty(i)) {
list1[i] = list[i]
}
}
// 倒序
function sort(a, b) {
return b - a
}
list.sort(sort)
// console.log(arr[list1.indexOf(list[0])])
return [arr[list1.indexOf(list[0])],list[0]]
}
let aaa = 'aabbccccccvvvvvvvvyyyyyyyyyyyyyrr'
console.log("最多的字符是" + fun(aaa)[0]);
console.log("出现的次数是" + fun(aaa)[1]);
第三种:
// 统计一个字符,中出现次数最多的字符。
var str = "zhaochucichuzuiduodezifu";
var o = {};
for (var i = 0, l = str.length; i < l; i++) {
// var char = str[i];
var char = str.charAt(i);
if (o[char]) { //char就是对象o的一个属性,o[char]是属性值,o[char]控制出现的次数
o[char]++; //次数加1
} else {
o[char] = 1; //若第一次出现,次数记为1
}
}
console.log(o); //输出的是完整的对象,记录着每一个字符及其出现的次数
//遍历对象,找到出现次数最多的字符和次数
var max = 0;
var maxChar = null;
for (var key in o) {
if (max < o[key]) {
max = o[key]; //max始终储存次数最大的那个
maxChar = key; //那么对应的字符就是当前的key
}
}
console.log("最多的字符是" + maxChar);
console.log("出现的次数是" + max);