文章分类 Classification
判断一个字符串中出现次数最多的字符,统计这个次数
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2012-02-21 阅读次数: 1132 查看权限: 游客查看
判断一个字符串中出现次数最多的字符,统计这个次数
先看一个网上不好的例子:
var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串 var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0 var result = ''; //命名一个变量放置结果输入 while( str != '' ){ //循环迭代开始,并判断字符串是否为空 oldStr = str; //将原始的字符串变量赋值给新变量 getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母) eval("str = str.replace(/"+getStr+"/g,'')"); //执行替换 if( oldStr.length-str.length > maxLength ){ //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度 maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数) } } alert(result);
说它不好是使用了eval,不兼容标准浏览,不推荐使用。
下面是一个比较简单的方法:
var str ="adadfdfseffserfefs'efseeff$&ffftsdg"; for(var i=0,len=0,temp="";i<str.length;i++){ var s=str.substr(i,1); var tt=str.split(s); if(tt.length>len){ len=tt.length; temp=s+"出现最多次数为"+len; } } alert(temp);
第三个方法是网上转摘的,想法也不错:
//将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) { var key = str[i]; if (typeof obj[key] == 'undefined') { obj[key] = 1; } else { obj[key]++; } } /*遍历这个hash table,获取value最大的key和value*/ var max = -1; var max_key = ""; var key; for (key in obj) { if (max < obj[key]) { max = obj[key]; max_key = key; } } alert("字符:"+max+" 出现次数:"+max_key);
但奇怪的是在IE8下竟然发生max_key=undefinded
关键词: 前端试题,Javascript,数组 编辑时间: 2012-02-21
3
高兴2
支持0
搞笑0
不解0
谎言0
枪稿1
震惊0
无奈0
无聊0
反对0
愤怒
54.12%(46)
45.88%(39)
- 暂无评论
文章图片 article Pictrue
网友评论