此前大多数方法在遇到多个字符出现次数最多的情况便只能找出一个字符,我的方法较好地解决了这个问题,话不多说,直接上代码:
let str = 'abbcccdddddeeeeeeefffffff';//特意给定字符e和f都出现了7次function findCharMore(str){ let charNum = {}; /*遍历字符串,得到对象{字符:出现次数}*/ for(let i=0;i < str.length;i++){ let e = str.charAt(i); if(charNum[e]){ charNum[e]++; }else{ charNum[e] = 1; } } let {maxCharArr,count} = {maxCharArr:[],count:0}; /*遍历对象,找出出现次数最多的元素*/ for (let key in charNum) { /*出现次数更多则需剔除先前的元素并添加当前元素*/ if (count < charNum[key]) { count = charNum[key]; maxCharArr.shift(); maxCharArr.push(key); } /*出现次数相同则在数组添加元素*/ if (count == charNum[key] && maxCharArr.indexOf(key) == -1) { maxCharArr.push(key); } } /*返回对象{高频字符数组,最大出现次数}*/ return {maxCharArr,count} } console.log(findCharMore(str));//打印结果:{ maxCharArr: [ 'e', 'f' ], count: 7 }12345678910111213141516171819202122232425262728293031
该方法返回值为对象{高频字符数组,最大出现次数},解决了大多数方法不考虑同时有多个字符出现次数最多的情况。
【免责声明:本文图片及文字信息均由千锋重庆web前端培训小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】
标签:字符,方法,JS,次数,let,str,字符串,出现 来源: https://blog.51cto.com/15128443/2670151
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。