使用 JavaScript 从数组中找出出现频率最高的单词
问题
我们需要编写一个 JavaScript 函数,该函数将一个数组 arr(包含英语小写字母的字符串)作为第一个参数。第二个参数是数字 num(num < arr 的长度)。
我们的函数应该返回数组 arr 中 num 个最常出现的元素。
应按频率从最高到最低对答案进行排序。如果两个单词的频率相同,则按较低的字母顺序优先。
例如,如果函数的输入是
输入
const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"]; const num = 4;
输出
const output = ["the", "is", "sunny", "day"];
输出说明
“the”、“is”、“sunny”和“day”是最常出现的四个单词,
出现的次数分别是 4、3、2 和 1。
示例
代码如下 −
const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;
const mostFrequent = (arr = [], num = 1) => {
const map = {};
let keys = [];
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
map[arr[i]]++;
} else {
map[arr[i]] = 1;
}
}
for (let i in map) {
keys.push(i);
}
keys = keys.sort((a, b) => {
if (map[a] === map[b]) {
if (a > b) {
return 1;
} else {
return -1;
}
}
else {
return map[b] - map[a];
}
})
.slice(0, num);
return keys;
};
console.log(mostFrequent(arr, num));输出
[ 'the', 'is', 'sunny', 'day' ]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP