(1)数组+对象
<script >
var str = 'aafcbad';
var obj = {};
var arr = [];
var letter;
for(var i = 0,len = str.length;i<len;i++){
letter = str[i];
if(!obj[letter]){ // 第一次放进去
obj[letter] = 1;
}else{
obj[letter]++;
}
}
var max_key,max_num=0;
for(key in obj){
if(max_num <obj[key]){
max_num = obj[key];
max_key = key;
}
}
document.write('字母:'+max_key+' 次数:'+max_num);
</script>
(2)正则
<script>
var str = 'aaabbbccck';
var arr = str.split(''); // 转换为数组
arr.sort(); // 对数组进行排序
str = arr.join(''); // 转换为字符串
var re = /(\w)\1+/g; // 将相同的内容分割为一组
var value = '';
var num = 0;
str.replace(re,function($0,$1){ // replace 字符串替换 re规定字符串要替换的模式 $0父级,$1 第一个孩子
if($0.length > num){
num = $0.length;
value = $1;
}
});
alert('最多的字符:'+value+',个数:'+num);
</script>
(4)JSON对象
<script type="text/javascript">
var str = 'aaabbbvvvk';
var json = {}; //遍历str拆解其中的每一个字符将其某个字符的值及出现的个数拿出来作为json的kv
for (var i = 0; i < str.length; i++) {
//判断json中是否有当前str的值
if (!json[str.charAt(i)]) {
//如果不存在 就将当前值添加到json中去
json[str.charAt(i)] = 1;
} else {
//else的话就让数组中已有的当前值的index值++;
json[str.charAt(i)]++;
}
}
//存储出现次数最多的值和次数
var number = '';
var num=0;
//遍历json 使用打擂算法统计需要的值
for (var i in json) {
//如果当前项大于下一项
if (json[i]>num) {
//就让当前值更改为出现最多次数的值
num = json[i];
number = i;
}
}
//最终打印出现最多的值以及出现的次数
alert('出现最多的值是'+number+'出现次数为'+num);
</script>
(4)数组
<script>
var str="dcbaaaaaaaa";
var arr=str.split(""); // 转换为数组
arr=arr.sort(); // 排序
var n=1; // 记录出现次数
var arr1=[];
var maxmore="";
for(var i=0;i<arr.length;i++){
if(arr[i]===arr[i+1]){
maxmore=arr[i];
n++;
}
else{
arr1[n]=maxmore;
n=1
}
}
console.log('最多的字母'+maxmore);
console.log('最多的字母次数'+ (arr1.length-1))
</script>
注意:
以上几种使用以上几种方法时,被检测字符串中若出现个数相同的内容,仅能输出一个。