/*
1、计数排序的思路
==>索引和数据都是数字
==>字符'a'索引 数字
对象数据类型
==>对象的key设置字符串里面出现的每一个字符
==>对象的value就是出现的次数
2、循环遍历字符串
==>拿到一个字母
==>吧每一个字符当作key来使用,添加到obj中
==>如果obj里面有这个了,++
=>访问obj对应的这个成员名,数字++
==>如果obj里面没有这个,赋值为1
=>访问obj对应这个成员名,undefined
==>利用对象和数组关联语法进行判断
=>obj[s]
=>obj[s]得到的结果,undefined,>=1
=>能进入if条件说明obj[s]是一个数字并且obj[s]=true,就++
=>如果进入else条件,说明obj[s]是一个undefined,把obj[s]赋值为1
=>
=>
*/
var str = "abcabcabcabc";
var obj = {};
for (var i = 0; i < str.length; i++) {
var s = str[i];
console.log(s);
//判断obj里面有没有这个成员
//s是一个变量,只能用数组关联语法
if (obj[s]) {
obj[s]++;
} else {
obj[s] = 1;
}
}
console.log(obj);
//统计出现此处最多的字符
//for in 遍历
var max = ""; //答案
var maxNum = 0; //比较的中间值
for (var key in obj) {
//只要obj某一个成员的值比设置的maxNum大
if (obj[key] === maxNum) {
max += key;
}
//替换掉maxNum,并且同时给max赋值为这个key
if (obj[key] > maxNum) {
maxNum = obj[key];
max = key;
}
}
//找到一个出现最多的字符
console.log(max);
//找到所有出现最多的字符
console.log(obj[key]);