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

方法一:

    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);

方法二:

    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方法

查找数组对象中 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值