js统计字符串中每个字符出现的次数

题目介绍:在文本框内随便输入一个字符串,然后计算出该字符串中每个字符出现的次数。如图:

下面看一下实现的方式:

首先简单写下html与上述图中的css

<div class="centerB">
  	<h4>统计字符串中每个字符出现的次数</h4>
  	<input class="inputB" type="text" /><a class="button" href="#" onclick="btnClick()">开始统计</a>
  	<div class="output"></div>
  </div>
.centerB{
			width:600px;
			margin:0 auto;
			padding:30px 0 0 0;
			text-align:center;
		}
.centerB h4{
			font-size: 18px;
			font-weight: 600;

		}
.inputB{
			border:1px solid #ccc;
			padding:5px;
			width:200px;
			height:20px;
			color:#666;
		}
.button{
			display:inline-block;
			height:32px;
			padding:0 10px;
			line-height: 30px;
			font-size:16px;
			background: #3c9df9;
			color:#fff;
			margin-left:3px;
			text-decoration: none;
		}
.button:hover{
			opacity:0.8
		}
.output{
			padding:30px 0 0 0;

		}

接下来定义一个方法来统计字符串中每个字符出现的次数;eg:"abacbcd"这样一个字符我们怎么来实现那,首先我们要对该字符串进行遍历,在遍历时还要定义一个空对象来保存遍历的每个字符及它出现的次数。代码如下:

//统计方法
	function checkNum(str){
		     var newStr=str;
		     var times={};//定义一个对象用来保存遍历的每个字符及它出现的次数
		     var max_key=" ";
		     var max=0;
		     var out=" ";
		     for(var i=0;i<newStr.length;i++){
		     	if(times[newStr[i]]==null){
		     		times[newStr[i]]=1;//js中可以用方括号语法访问对象的属性eg person.name=person["name"]
		     	}else{
		     		times[newStr[i]]++;
		     	}
		     }
		     for(var k in times){//用for in来遍历对象属性
	           if(max<times[k]){//找到出现次数最多的字符
	            	max=times[k];
	            	max_key=k;
	            }
	           out+=k+":"+times[k]+"次"+"\n"; 
		    }
		    return (max_key+"出现次数最多"+":"+max+"次"+"\n"+out);
		  
	    }

上面基本就可以实现了,接下来我们来完成界面中的要求在点击“按钮”时显示统计结果代码如下:

function btnClick(){
			var in_val=document.getElementsByClassName("inputB")[0].value;
			var btn=document.getElementsByClassName("button")[0];
			var output=document.getElementsByClassName("output")[0];
	        var out_val=" ";
			if(in_val==" "){
				 output.innerHTML="请输入一个字符串";
				 
			   }else{
			    	out_val=checkNum(in_val);
				    output.innerHTML=out_val;		
			  }
		}

 

转载于:https://my.oschina.net/conqueror/blog/728813

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值