varstr ="zhaochucichuzuiduodezifu";
var o = {};
for(vari = 0, length = str.length; i < length; 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);//输出的是完整的对象,记录着每一个字符及其出现的次数
//遍历对象,找到出现次数最多的字符和次数
varmax = 0;
varmaxChar =null;
for(varkeyino) {
if(max < o[key]) {
max = o[key];//max始终储存次数最大的那个
maxChar = key;//那么对应的字符就是当前的key
}
}
console.log("最多的字符是"+ maxChar);
console.log("出现的次数是"+ max);
以上代码运行后再控制台输出的结果如下图:
不过还是存在不足,不能直接把次数最高的字符同时输出,这还需要加额外的判断条件。完美的代码如下哈O(∩_∩)O
varstr ="nininihaoa";
var o = {};
for(vari = 0, length = str.length; i < length; i++) {
var char = str.charAt(i);
if(o[char]) {
o[char]++;//次数加1
}else{
o[char] = 1;//若第一次出现,次数记为1
}
}
console.log(o);//输出的是完整的对象,记录着每一个字符及其出现的次数
//遍历对象,找到出现次数最多的字符的次数
var max = 0;
for(var key in o) {
if(max < o[key]) {
max = o[key];//max始终储存次数最大的那个
}
}
for(var key in o) {
if(o[key] == max) {
//console.log(key);
console.log("最多的字符是"+ key);
console.log("出现的次数是"+ max);
}
}
结果如下: