在 JavaScript 中找到句子中最频繁出现的 n 个单词
对于本问,我们定义一个句子是一个包含英文字母和标点的字符串,而一个单词是该句子的子串,由空格连接而成。
我们需要编写一个 JavaScript 函数,该函数以句子字符串 str 作为第一个参数,以一个数字 num 作为第二个参数。该函数首先应统计句子中每个单词的频率,然后返回一个长度为 num 的数组,其中包含按频率递减放置的 num 个最频繁单词。
例如 −
如果输入句子和数字为 −
const str = 'i am a good coder and i know that i can solve a problem'; const num = 2;
那么输出应为 −
const output = ['i', 'a'];
因为“i”在数组中出现 3 次而“a”出现 2 次,它们是字符串中最频繁的 2 个单词。
示例
代码如下 −
const str = 'i am a good coder and i know that i can solve a problem';
const num = 2;
const findMostFrequent = (str = '', num = 1) => {
const strArr = str.split(' ');
const map = {};
strArr.forEach(word => {
if(map.hasOwnProperty(word)){
map[word]++;
}else{
map[word] = 1;
}
});
const frequencyArr = Object.keys(map).map(key => [key, map[key]]);
frequencyArr.sort((a, b) => b[1] - a[1]);
return frequencyArr.slice(0, num).map(el => el[0]);
};
console.log(findMostFrequent(str, num));输出
在控制台中的输出为 −
[ 'i', 'a' ]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP