let str = 'abcoadadooadbdsfsdfwewerewrwrqeqgfdgfdgcvgbhooo'
let obj = {}
for (let i = 0i <str.lengthi++) {
//根据字符的名称查找对象中有没有对应的属性
if (obj[str[i]]) {
// 有就+1
obj[str[i]]++
} else {
// 没有就等于1
obj[str[i]] = 1
}
}
console.log(obj)
返回如下结果:
2.再遍历字符串 比较大小得出谁出现的次数最多,这里有两种方式
2.1 利用for in 循环
// let max = 0
// let val = ''
// for (var k in obj) {
// // k得到的是属性名 ,obj[k]得到是属性值
// if (obj[k] >max) {
// max = obj[k]
// val = k
// }
// }
// console.log('最多的字符是' + val)
2.2 利用forEach遍历数组
let max = {
name: '',
count: 0
}
Object.keys(obj).forEach(k =>{
//判断是否有别的字符串大于max
if (obj[k] >max.count) {
max.name = k
max.count = obj[k]
}
})
console.log(max)
//获取字符数,1个中文=2个英文字符//参数:对象
function gw_js_checkform_str_len(str){
var value=str
var length=value.length
if(length>0){
for(var i=0i<lengthi++){
var value_substr=value.substr(i,1)//截取字符串
var value_escape=escape(value_substr)//编码
if(value_escape.indexOf('%u')>-1){length++} //是否搜索到指定字符串
//if(value_escape.length>3){length++} //也可使用此语句替换上一条语句
}
}
return length
}
有点复杂。1.先取出要比较的字符。2.然后再用这些字符和字符串对比。
var str = "abcdeajhdddbbbcccee"var obj = {}//存放要比较的字符(用键值对存储,如:{a:a,b:b})
//获取要比较的字符
for (var i = 0, len = str.length i < len i++) {
var s = str[i]
if (s == '') continue
if (obj[s]) continue//判断字符是否已经存在obj中
else obj[s] = s
}
var index = 0//字符出现最多个数
var x = ''//出现最多个数的字符
for (var item in obj) {
var arr = str.split(item)//用字符分割字符串
var num = arr.length - 1//字符出现的次数
if (num > index) {//和上一次结果比较
index = num
x = item
}
}
如果有更好的方法请贴出来,大家一起学习。