JS查找字符串中出现频率最高的字符
在一个字符串中,比如' zhaochucichuzuiduodezifu ',我们需要找出出现最多的字符。本文将详细解释这种方法。
首先介绍了两个字符串对象中的两种方法:indexOf()和charAt()方法
indexOf()方法引入了返回字符串中指定字符串值的第一个出现位置
CharAt()方法引入返回指定位置的字符
首先,做一个小测试,找出“woainixiaoli”字符串中的每个“I”出现的位置。
scriptvar arr=' woainixiaolivar索引=-1;//定义变量索引来控制索引值。//当没有找到a,即indexOf()的值为-1时,结束循环do {index=arr。indexof ('I ',index 1);//使用第二个参数index 1控制每次搜索从上次找到的字符a的下一个索引位置开始if (index!=-1) {//可以找到字符icon sole . log(index);//输出{ while }的位置(index!=-1);/script上述代码运行后控制台的输出为
言归正传,询问字符串“zhaochucichuzuiduodezifu”中最多的字符
方法1:使用数组(有一个缺点,当最多有一个以上的字符时,只能找到一个)
script var str=' zhouchichuzuuidodezifu ';var arr=[];//定义一个新数组//遍历字符串(var i=0,length=str.length一、长度;i ) {var指数=-1;var j=0;//查找每个字符do {index=str。(str [I],索引1)的索引;if (index!=-1){ j;}}while (index!=-1);arr[j]=str[I];//将字符串中的字符赋给数组arr中索引为J的数据。反复循环后,会出现重复赋值的现象。//后面的赋值会覆盖前面的赋值,但不会影响我们找到字符最多的那个} console . log(arr);Console.log('最大字符为' arr[arr . length-1]);Console.log('次数为'(arr . length-1));/script上述代码运行后控制台的输出结果如下:
从输出数组arr中也可以看出,该方法将覆盖相同次数的字符,只能显示一个字符。如果两个字符出现的最大次数相同,此方法只能得到一个。基于此,请参考下一个包含对象的解决方案。
方法2:使用对象(推荐)
script var str=' zhouchichuzuuidodezifu ';var o={ };for (var i=0,length=str.length一、长度;I){//var char=str[I];var char=str . charat(I);如果(o[char]) {//char是对象o的属性,o[char]是属性值,o[char]控制o[char]的出现次数;//times加1 } else { o[char]=1;//如果是第一次出现,记录号码为1 } } console . log(o);//输出是一个完整的对象,记录每个字符及其出现次数。//遍历对象,找到出现次数最多、频率var max=0的字符;var maxChar=nullfor(o中的var键){ if(max o[key]){ max=o[key];//max总是存储次数最多的maxChar=key//那么对应的字符就是当前键}}console.log ('maxChar是最多的字符);console . log(“is”的最大出现次数);/script上述代码运行后控制台的输出结果如下:
这种方法解决了第一种方法的问题,我们可以清楚地记录每个字符的频率。当有两个频率相同的字符时,可以在对象中清楚地看到它们。
然而,仍然存在一些缺点。频率最高的字符不能同时直接输出,需要附加判断条件。完美的代码如下:哈O(_)O
scriptvar str=' nininihaoavar o={ };for (var i=0,length=str.length一、长度;I){ var char=str . charat(I);if(o[char]){ o[char];//times加1 } else { o[char]=1;//如果是第一次出现,记录号码为1 } } console . log(o);//输出是一个完整的对象,记录每个字符及其出现次数。//遍历对象,找到出现次数最多的字符个数var max=0;for(o中的var键){ if(max o[key]){ max=o[key];//max始终存储次数最多的一个} } for(o中的var键){ if(o[key]==max){//console . log(key);Console.log('最多的字符是' key ');console . log(“is”的最大出现次数);} }/脚本结果如下:
以上是边肖介绍的JS搜索字符串中出现频率最高的字符。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:JS查找字符串中出现频率最高的字符是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。