js获取字符串出现次数最多_Js查找字符串中出现次数最多的字符及个数实例解析...

如sssfgtdfssddfsssfssss,出现最多的字符是s,出现了12次

传统写法

分析:

1.准备一个空的json,通过循环字符串的每个字符来看,如果json里没有这个字符,就在json里创建一个新的数组,并把这个字符放进数组里,如果json里有这个字符,继续把字符添加进数组里,这时循环完json里有n个数组

2.找出json里长度最长的数组,此时长度即个数,而最多的字符就是这个参数,用到for...in...循环和参数attr

var str="sssfgtdfssddfsssfssss";

function max(){

var json={};

var num=0;

var value=null;

for(var i=0;i

var k=str[i];

if(!json[k]){

json[k]=[];

}

json[k].push(k); //这里不需要else,否则只有存在这个字符时才添加。次数会少一次

}

for(var attr in json){

if(num

num=json[attr].length;

value=json[attr][0];

}

}

alert("出现最多的字符是:"+value+',出现次数是:'+num);

};

max(str);

如果不想往json里放东西怎么做呢?

分析:

1.准备一个空的json,通过循环字符串的每个字符来看,如果json里没有这个字符,就把这个字符的数目设为1,如果有则数目++

2.循环json里的字符,只要存在,就把他的数目赋给一个变量,并且每次都比较新的字符数量和这个变量的大小,如果比变量大,则更新变量的值,最后这个变量的值就是最多字符的数目

而最多的字符就是json里这个字符

var str="sssfgtdfssddfsssfssss";

function max(){

var json={};

for(var i=0;i

var k=str[i]; //k是所有字符,字符串也跟数组一样可以通过中括号下标方法取到每个子元素

if(json[k]){

json[k]++; //json里有这个字符时,把这个字符的数量+1,

}

else{

json[k]=1; //否则把这个字符的数量设为1

}

}

var num=0;

var value=null;

for(var k in json){ //s、f、g、t、d

if(json[k]>num){

num=json[k];

value=k;

}

}

alert("出现最多的字符是:"+value+',出现次数是:'+num);

};

max(str);

正则的方法

分析:

1.字符串转为数组进行排序,以便正则选出相同的挨在一起的字符

2.通过正则replace()方法的两个参数,来匹配出现最多的字符和数量

var str="sssfgtdfssddfsssfssss";

var num=0;

var value=null;

function max(){

var new_str=str.split("").sort().join("");

var re=/(\w)\1+/g; //没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来,\1表示跟前面第一个子项是相同的

new_str.replace(re,function($0,$1){ //$0代表取出来重复的一个个整体,如[s,s...],[f,f..],[d,d....] $1代表这个整体里的字符

if(num

num=$0.length;

value=$1

}

});

alert(value+":"+num)

};

max(str);

本文标题: Js查找字符串中出现次数最多的字符及个数实例解析

本文地址: http://www.cppcns.com/wangluo/javascript/162484.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值