在 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' ]