//第一种一般方法
var str = 'asdfghasdfgfgersdfsdfgfdsdddsd';
function getMore(str){
//把字符串的每一项当做属性名存起来
//存储之前 先看 对象中有没有这个属性,没有就给obj增加一个属性 属性值是1
//没有的话 就在 他现在的 值基础上 加1
let obj = {};
for(let i =0;i<str.length;i++){
let t = str[i];
if(obj.hasOwnProprperty(t){
obj[t] += 1;
} else{
obj[t] = 1;
}
}
let key = '',num = 0;
for(var k in obj){
if(obj[k] >num){
key = k;
num = obj[k]
}
}
return{
key,
num
}
}
console.log(getMore(str))
//{key: "d", num: 9} //{n: "d", m: 9}
//第二种 match捕获
var str = 'asdfghasdfgfgersdfsdfgfdsdddsd';
function getMore2(str){
//先获取乡转为数组的字符串aadddddddddeffffffgggghrssssss
str = str.split('').sort().join('');
let reg = /(\w)\1*/g
var arr = str.match(reg);
//获取相同字符组成的数组
arr.sort((a,b) =>{
return b.length - a.length
//降序 第一项就是想要的
})
return{
key:arr[0][0],
num:arr[0].length
}
}
console.log(getMore2(str))//{key: "d", num: 9}
//第三种方法replace实现
var str = 'asdfghasdfgfgersdfsdfgfdsdddsd';
function getMore3(str) {
str = str.split('').sort().join('');//
let reg = /(\w)\1*/g;
let key = '',num = 0;
str.replace(reg,function(a,b){
//a是大正则dddddddddd
//b是第一个分组里的内容d
if(a.length >num){
num = a.length;
key = b;
}
})
return{
key,
num
}
}
console.log(getMore3(str))//{key: "d", num: 9}