假设我有以下字符串“35538​​5”。我需要一个简单的JavaScript,它可以告诉我最多被提及的字符是5。预先谢谢您。

我尝试了这个,但没有结果。

var exp = '355385' ;

var exps =exp.split("");

var expCounts = { };

for (var i=0;i<exp.length;i++)

{expCounts["_" + exps[i]] = (expCounts["_" + exps[i]] || 0) + 1 ;

if (expCounts==3) exps=exps[i]; }; exps;

最佳答案

这将遍历字符串中的每个字符,并跟踪每个字符的计数以及具有最大计数的字符:

var exp = '3553853335' ;
var expCounts = {};
var maxKey = '';
for(var i = 0; i < exp.length; i++)
{
    var key = exp[i];
    if(!expCounts[key]){
     expCounts[key] = 0;
    }
    expCounts[key]++;
    if(maxKey == '' || expCounts[key] > expCounts[maxKey]){
        maxKey = key;
    }
}

console.debug(maxKey + ":" + expCounts[maxKey]);

更新:
这是一个ES6版本,将处理多个字符具有相同最大计数的字符串

function maxCount(input) {
    const {max, ...counts} = (input || "").split("").reduce(
    (a, c) => {
        a[c] = a[c] ? a[c] + 1 : 1;
        a.max = a.max < a[c] ? a[c] : a.max;
        return a;
    },
    { max: 0 }
    );

    return Object.entries(counts).filter(([k, v]) => v === max);
}

示例(请原谅输出):
maxCount('--aaaa1111--').join(' | ').replace(/,/g, ':');

输出1:4 | -:4 | a:4

10-07 20:25