You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:如何返回字符串中出现次数最多的多个字符

解决多最高频字符的统计问题

嘿,我懂你现在的困扰——当字符串里有多个出现次数相同的高频字符时,用_.invert()确实会掉链子对吧?毕竟_.invert()反转键值对的时候,如果多个键对应同一个值,只会保留最后一个,直接就把其他高频字符弄丢了。

给你分享个靠谱的解决思路,分三步走就能搞定:

  • 第一步:统计字符频次
    先用_.countBy()把每个字符的出现次数统计出来,这一步比自己写循环高效多了:

    const str = 'javascript prototype';
    const charCounts = _.countBy(str);
    // 结果会是类似 { j:1, a:2, v:1, ..., p:3, t:3 } 的对象
    
  • 第二步:找到最高频次值
    从统计结果里提取所有频次数值,用Math.max()找出最大的那个:

    const maxCount = Math.max(...Object.values(charCounts));
    // 这里会得到3,也就是p和t的出现次数
    
  • 第三步:筛选所有最高频字符
    遍历统计对象,把所有频次等于maxCount的字符筛选出来:

    const mostFrequentChars = Object.entries(charCounts)
      .filter(([char, count]) => count === maxCount)
      .map(([char]) => char);
    

把这些步骤合起来,运行后mostFrequentChars就会返回["p", "t"],完美解决你的问题!

另外提个小细节:如果你的字符串里有空格或者其他需要忽略的字符,可以在统计前先处理一下,比如去掉空格:

const processedStr = str.replace(/\s/g, '');
const charCounts = _.countBy(processedStr);

内容的提问来源于stack exchange,提问作者Caleb Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:47:52