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

 更新时间:2016年09月05日 09:27:29   作者:鬼畜十三  
这篇文章主要介绍了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<str.length;i++){
var k=str[i];
if(!json[k]){
json[k]=[];
}
json[k].push(k); //这里不需要else,否则只有存在这个字符时才添加。次数会少一次
}
for(var attr in json){
if(num<json[attr].length){
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<str.length;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<$0.length){
num=$0.length;
value=$1
}
});
alert(value+":"+num)
};
max(str);

相关文章

  • 可选择和输入的下拉列表框示例

    可选择和输入的下拉列表框示例

    如果想实现可选择和输入的下拉列表框,那么下面有个不错的示例,希望大家可以参考下
    2013-11-11
  • 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别

    关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别

    mouseover ,mouseout ,mouseenter,mouseleave,都是鼠标点击而触发的事件,各自代表什么意思,有哪些区别呢?下面跟着脚本之家小编一起看看吧
    2015-10-10
  • 前端常用判断符号??,?. ,! ,!! ,|| ,&&,?:用法示例

    前端常用判断符号??,?. ,! ,!! ,|| ,&&,?:用法示例

    这篇文章主要给大家介绍了关于前端常用判断符号??,?. ,! ,!! ,|| ,&&,?:的相关资料, 在日常编写中,我们会频繁使用以下几个符号,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Javascript日期时间函数的使用方法举例

    Javascript日期时间函数的使用方法举例

    在JavaScript中日期时间函数是一组用于操作和处理日期和时间的函数,这些函数可以用于获取当前日期和时间、格式化日期和时间、计算日期和时间的差异、转换日期和时间的格式等,这篇文章主要给大家介绍了关于Javascript日期时间函数的使用方法,需要的朋友可以参考下
    2024-02-02
  • 服务端预渲染之Nuxt(使用篇)

    服务端预渲染之Nuxt(使用篇)

    这篇文章主要介绍了服务端预渲染之Nuxt(使用篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • js每隔两秒输出数组中的一项(实例)

    js每隔两秒输出数组中的一项(实例)

    下面小编就为大家带来一篇js每隔两秒输出数组中的一项(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • bootstrap配合Masonry插件实现瀑布式布局

    bootstrap配合Masonry插件实现瀑布式布局

    这篇文章主要为大家详细介绍了bootstrap配合Masonry插件实现瀑布式布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Electron点击穿透不规则窗体的透明区域的实现

    Electron点击穿透不规则窗体的透明区域的实现

    本文主要介绍了Electron点击穿透不规则窗体的透明区域的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 微信小程序实现左滑修改、删除功能

    微信小程序实现左滑修改、删除功能

    这篇文章主要为大家详细介绍了微信小程序实现左滑修改、删除功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • javascript常用正则表达式汇总

    javascript常用正则表达式汇总

    本文给大家总结了一下常见的javascript检验各种规则的代码,通过正则表达式来实现,都是项目中经常需要用到的,有需要的小伙伴可以参考下。
    2015-07-07

最新评论