找出字符串中出现次数最多的字母和出现次数精简版

  

复制代码 代码如下:

  <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]] > c ? a[i] : c;

  }

  alert(c + ":" + b[c]);

  </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++如果没有就继续设置下标

  这个例子没有考虑空格,特殊字符等。