方法1
利用对象记录每个字符出现的次数
var str = 'aaaaaaaabbbcccccbbcccccdddd';
var obj = {}; // 利用对象来记录每个字符出现次数
for (var i of str) {
obj[i] = obj[i] ? obj[i] += 1 : 1 // 若属性i存在 属性值+1 否则=1
}
var count = 0; // 出现的次数
var keyName = ''; // 最多次数多字符名
for (var k in obj) { // 遍历对象 对比取最大值 和 属性名key
if (obj[k] > count) {
count = obj[k]
keyName = k
}
}
console.log('出现最多的字符是:' + keyName + ',' + '次数为:' + count);
方法2-reduce
var str = 'aaaaaaaabbbbbcccccdddd';
var arr = str.split('') // split 转成数组
var obj = arr.reduce((pre, cur) => { // Array.reduce 参数一:初始值 参数二:当前值
cur in pre ? pre[cur] += 1 : pre[cur] = 1 // 如果对象中存在当前值(属性) 则+1 否则=1
return pre
}, {}) // 初始值为空对象
// 最后同上
var count = 0;
var keyName = '';
for (var k in obj) {
if (obj[k] > count) {
count = obj[k]
keyName = k
}
}
console.log('出现最多的字符是:' + keyName + ',' + '次数为:' + count);