找出字符串中出现次数最多的字母和出现次数,超精简版,欢迎拍板

<script type="text/javascript">
    var a = "testthisprojecthelloworld!";
    var b = {};
    var c = null;
    for (var i in a) {
        !isNaN(b[a[i]]++) || (b[a[i]] = 1);
        c = b[a[i]] > (b[c]==undefined?"0":b[c]) ? a[i] : c;
    }
    alert(c + ":" + b[c]);
//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
</script>

 

isNaN(x) 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。

i是index

如果第一次循环

a[i] 是 't'

b[a[i]] 是 b['t'] 访问下标是't'的对象

b[a[i]]++ 不是数字的++始终为NaN

isNaN(b[a[i]]++) 是 true 因为b没有下标是t的对象 b现在是空的

!isNaN(b[a[i]]++) 是 false

!isNaN(b[a[i]]++) || (b[a[i]] = 1); 或运算符|| 一个为真就是真 左边表达式为false 所以接着执行右边的表达式 可以看成条件语句的简写 if(isNaN(b[a[i]]++)){b[a[i]] = 1}

 (b[a[i]] = 1); 左边的不成立 就设置b的下标 b['t'] = 1;

再次循环如果遇到t就会成功执行t++ 如果没有就继续设置下标

 这个例子没有考虑空格,特殊字符等。//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!

 

转载于:https://www.cnblogs.com/ahjesus/archive/2012/11/07/2759077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值