Js对象(五)如何查找字符串中出现次数最多的字符 2021-11-24

JavaScript09

Js对象(五)如何查找字符串中出现次数最多的字符 2021-11-24,第1张

1. 先找出每个字符出现的次数

    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

    }

}

如果有更好的方法请贴出来,大家一起学习。