使用 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' ]

更新時間:2021-04-24

790 次瀏覽

開啟您的職業生涯

完成課程並獲得認證

開始學習
廣告
© . All rights reserved.