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

如何从数组中提取字符串中出现频次最高的前X个单词(降序)

解决方案

你已经算出了每个单词的出现次数,接下来只需要把单词和频次关联起来,排序后提取结果即可,完整代码如下:

const str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua";
const array = ["a", "em", "i", "el"];
const X = 3;

// 1. 关联每个单词与对应的出现频次
const wordFrequencyPairs = array.map(word => [word, str.split(word).length - 1]);

// 2. 按出现频次降序排序
wordFrequencyPairs.sort((pairA, pairB) => pairB[1] - pairA[1]);

// 3. 提取排序后的纯单词数组
const sortedWordArray = wordFrequencyPairs.map(pair => pair[0]);

// 4. 获取前X个高频单词
const topXWords = sortedWordArray.slice(0, X);

console.log(sortedWordArray); // 输出: ["i", "a", "em", "el"]
console.log(topXWords); // 输出: ["i", "a", "em"]

步骤说明:

  • 关联单词与频次:用map遍历原单词数组,将每个单词和它的出现次数组成一个二元数组,这样就能把两者绑定在一起,避免排序时丢失对应关系。
  • 降序排序:sort方法里通过pairB[1] - pairA[1]实现按频次从高到低排序,如果两个单词频次相同,会保持它们在原数组中的顺序(稳定排序)。
  • 提取单词数组:再次用map把排序后的二元数组里的单词提取出来,得到只包含单词的排序数组。
  • 截取前X个:用slice(0, X)截取数组的前X个元素,就是你需要的结果。

另外,你原代码里有变量名错误:循环中用的words应该是array,s应该是str,修正后就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:00