javaScript编程题之检测字符串中出现次数最多的字符

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var str="aaaaakkkkkkssssaaggggssjjjjjsssaa";
var obj={};
var max,maxNum;
for(var i=0;i<str.length;i++){
if(!obj[str[i]]){
obj[str[i]]=1
}else{
obj[str[i]]++;
}
}
max=0,maxNum="";
for(i in obj){
if(obj[i]>max){
max=obj[i];
maxNum=i;
}
}
console.log(maxNum,max);

方法二:

1
2
3
4
5
6
7
8
9
var str="aaaaakkkkkkssssssjjjjjsssaa";
var arr=str.split("");
function getMost(arr){
return arr.reduce(function(prev,next){
prev[next]=prev[next]+1||1;
return prev;
},{})
}
console.log(getMost(arr));

如果刚看这个方法不理解,可以先熟悉一下reduce方法回掉函数各个参数的意义。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
语法: array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue:可选项,其值用于第一次调用 callback 的第一个参数。如果没有设置初始值,则将数组中的第一个元素作为初始值。==空数组调用reduce时没有设置初始值将会报错。==

看一下以下这编程题可以帮助理解reduce方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
查找数组对象中 age 大于 18 对象
{age: 19, name:'Jack'},
{age: 5, name:'Apple'},
{age: 12, name:'Lynn'},
{age: 25, name:'David'}
<script>
var arr=[{age: 19, name:'Jack'},{age: 5, name:'Apple'},{age: 12, name:'Lynn'},{age: 25, name:'David'}];
function adult(array){
var target=array.filter(function(item) {
return (item.age>18);
});
return target;
}
console.log(adult(arr));
</script>
------------- 本文结束 感谢您的阅读-------------

本文标题:javaScript编程题之检测字符串中出现次数最多的字符

文章作者:一只白~

发布时间:2019年01月06日 - 18:01

最后更新:2019年01月06日 - 19:01

原始链接:http://yoursite.com/2019/01/06/most/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。