假设我有以下字符串“355385”。我需要一个简单的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