javaScript统计字符串中字符出现的次数

时间:2023-01-04 11:22:30

javaScript统计字符串中字符出现的次数

好久没写博客了,最近混迹于CSDN、贴吧偶尔还去*刷题,遇到几个挺常见的js应用,便写个博客记录之。


1. 实现

代码很简单,思路是定义一个空对象来保存字符和它对应出现的次数,如下:

/*2016-06-29*/

//随便打一串字符做测试
var str = "sdwprwqsjxg",json = {};

for (var i = 0, l = str.length; i < l; i++) {
json[str[i]] = (json[str[i]] + 1) || 1;
}

console.log(JSON.stringify(json));
//-> {"s":2,"d":1,"w":2,"p":1,"r":1,"q":1,"j":1,"x":1,"g":1}

2. 扩展

基于此可以扩展出许多类似的应用。

2.1 字符串中第一个重复的字符

例如字符串: var str = "sdwprwqsjxg"; 我们注意到第一个重复的字符为w,下面我们通过js来实现

var str = "sdwprwqsjxg",json = {};
for (var i = 0, l = str.length; i < l; i++) {
json[str[i]] = (json[str[i]] + 1) || 1;
if(json[str[i]] == 2){
alert(str[i]);//-> 第一个重复的为w
break;//-> 找到后退出循环
}
}

2.2 出现次数最多的字符

例如字符串: var str = "dhhafhhheeert"; 我们注意到出现次数最多的字符为h(出现5次),下面我们通过js来实现

var str = "dhhafhhheeert",json = {};
for (var i = 0, l = str.length; i < l; i++) {
json[str[i]] = (json[str[i]] + 1) || 1;
}
var temp_val = 1, temp_key = str[0];
for(var key in json){
if(json[key] > temp_val){
temp_key = key;
temp_val = json[key];
}
}
alert(temp_key + ": " + temp_val);//-> h: 5