统计字符串
2018-07-06 本文已影响2人
椰果粒
一:统计每个字符出现的次数
/*
* 统计各个字符出现的次数
* 思路:
* 1. 定义一个空对象
* 2. 循环数组,如果对象的key存在,就给这个key的值+1,否则key的值就为1
* */
function count(str){
let obj = {}
let countArr = []
let result = {}
for(let i=0;i<str.length;i++){
obj[str[i]]?obj[str[i]]+=1:obj[str[i]]=1
}
return obj
}
二:统计出现次数相同的是哪几项
function count(str){
let obj = {}
let countArr = []
let result = {}
for(let i=0;i<str.length;i++){
obj[str[i]]?obj[str[i]]+=1:obj[str[i]]=1
}
for(key in obj){
// 每个字符出现的次数
countArr.push(obj[key])
// 去重后的次数
countArr = [...new Set(countArr)]
}
for(let i=0;i<countArr.length;i++){
let arr2 = []
for(key in obj){
if(countArr[i]==obj[key]){
arr2.push(key)
result[countArr[i]] = arr2
}
}
}
console.log(result)
}
count(str)
三:统计出现次数最多的字符
/*
* 统计出现最多的字符
* 注意:要考虑有多个字符出现次数相同的情况
* 思路:
* 1. 首先定义一个对象,统计出所有的字符出现的次数
* 2. 循环该obj,将value===max的找出来,放到一个数组中,再展示出来
* */
function maxCount(str){
let obj = {};
let max = 1;
let arr = [];
for(let i=0;i<str.length;i++){
obj[str[i]]?obj[str[i]]+=1:obj[str[i]]=1
}
// 循环得到最多的次数
for(key in obj){
if(max<obj[key]){
max = obj[key]
}
}
for(key in obj){
if(obj[key] === max){
arr.push(key)
}
}
console.log("出现最多的字符是:"+arr + ",出现的次数是:" +max+"次")
}
maxCount(str)
四:统计指定字符出现的次数
/*
* 判断某个字符出现的次数
* 方法一思路:
* 先将字符串按照指定字符用split()切割成数组
* 切割后的数组最后一个是不包含该字符的
* 方法二思路:
* 用字符串的match()方法
* */
方法一:
function count1(str,char){
var len = str.split(char).length-1
return len
}
console.log(count1(str,"j"))
方法二:
console.log(("jj222ddd".match(new RegExp("j","g")) || []).length)
五:第一个重复的字符
function firstRepeat(str){
let obj = {}
for(let i=0;i<str.length;i++){
obj[str[i]]?obj[str[i]]+=1:obj[str[i]]=1
}
for(key in obj){
if(obj[key]<=1){console.log("no repeat!")}
if(obj[key]>=2){
console.log("第一个重复的是:"+key);
break
}
}
}
firstRepeat("112fff4")