js常会问的问题:找出字符串中出现次数最多的字符。

Posted Three stones

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常会问的问题:找出字符串中出现次数最多的字符。相关的知识,希望对你有一定的参考价值。

一、循环obj

let testStr = ‘asdasddsfdsfadsfdghdadsdfdgdasd‘;
        function getMax(str) {
            let obj = {};
            for(let i in str) {
                if(obj[str[i]]) {
                    obj[str[i]]++;
                }else{
                    obj[str[i]] = 1;
                }
            }
            let keys = Object.keys(obj); // 获取对象中所有key的值返回数组
            let values = Object.values(obj); // 获取所有value返回数组
            let maxVal = Math.max(...values);// Math.max可以找出传入参数的最大值,如:Math.max(1,2);这里可使用es6中的解构,
        也可以使用Math.max.apply(Math,values)可认为是apply(Math.max, arr)
        然后,arr是一个参数列表,对于max方法,其参数是若干个数,即Math.max(a, b, c, d, ...)
console.log(keys[values.indexOf(maxVal)],maxVal); } getMax(testStr); // obj值:{a: 5, s: 7, d: 12, f: 4, g: 2, h: 1, s: 7,}

 

keys[values.indexOf(maxVal)] => value里面最大的数字的位置,最大数字位置对应的key。
maxVal最大的数,也就是出现做多的次数。
str[i]是对应字符串中的第i个字符,
obj[str[i]] 就是对应的每个字母
for循环就是
把里面出现了的字母作为obj这个对象的key,然后循环的时候判断obj里面有没有以str[i]为key的对象,如有,就把它的value加一,说明这个字母在obj中出现的次数多了一次;刚开始i是键名,str[i]是键值,用这个键值再做obj的键名,然后赋值,或累加

eg:
obj[str[i]] = 1;  =>  var obj={};obj.aa = 1;console.log(obj)

二、正则
let stringMax = (str) => {
            str = str.split(‘‘).sort().join(‘‘);
            var s = str.match(/(\w+)(\1)/g);
            if(s === null) {
                return str[0];
            }
            s = s.map(e => e=e+e[0]);
            var out = s.sort((a,b) =>b.length - a.length);
            console.log(out[0][0],out[0].length);
        };
        stringMax(testStr)

 

 

以上是关于js常会问的问题:找出字符串中出现次数最多的字符。的主要内容,如果未能解决你的问题,请参考以下文章

找出字符串中出现次数最多的字符和次数

如何获取数组中出现次数最多的字符串?

笔试:找出一个字符串中字符出现最多的次数和该字符

JAVA 编程,输入一串字符,找出出现最多的字符

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

js统计一段字符串中出现次数最多的字符