下面为大家讲述三种查询字符串中出现次数最多的字符的方法:
第一种方法:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
var str = "nininihaoa";
var o = {};
for (var i = 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);
}
}
</script>
</html>
第二种实现方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
let str="sasjkdslsagtadssdgls";
let arr=str.split(''); //split方法用于把一个字符串分割成字符串数组
let Arr=arr.sort(); //sort方法用于对数组的元素进行排序。
let s=Arr.join(''); //join方法用于把数组中的所有元素放入一个字符串。
let iMaxs='';
let iMax=0;
//replace方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
s.replace(/(\w)\1+/g,function(s,s2){
if(str.length>iMax){
iMax=s.length;
iMaxs=s2;
}
})
console.log('最多字母:'+iMaxs+',次数:'+iMax+'')
</script>
</html>
第三种实现方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
let str="sasjkdslsagtadssdglskm";
let arr=str.split(''); //把方法分割成数组
let Arr=arr.sort(); //对数组进行排序
let n=1;
let iMax=0;
var iMaxs='';
for(var i=0;i<Arr.length;i++){
if(Arr[i]==Arr[i+1]){ //当两个相同为true
n++;
}else{
if(n>iMax){
iMax=n;
iMaxs=Arr[i];
}
n=1; //最后要重新设置n=1;可以理解为清空n
}
}
console.log('出现次数最多字母:'+iMaxs+',次数:'+iMax+'');
</script>
</html>
附:
以上三种方法就可以查询出字符串中出现次数最多的字符都有哪些。
结果显示: