Finding the most frequent word(s) in an array using JavaScript


We are required to write a JavaScript function that takes in an array, arr, of strings of English lowercase alphabets as the first argument. The second argument to our function is a number, num (num < length of arr).

Our function is supposed to return the num most frequent elements in the array arr.

The answer should be sorted by frequency from highest to lowest. If two words have the same frequency, then the word with the lower alphabetical order comes first.

For example, if the input to the function is


const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;


const output = ["the", "is", "sunny", "day"];

Output Explanation

"the", "is", "sunny" and "day" are the four most frequent words,

with the number of occurrences being 4, 3, 2 and 1 respectively.


Following is the code −

 Live Demo

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]]) {
      } else {
         map[arr[i]] = 1;
   for (let i in map) {
   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' ]

Updated on: 24-Apr-2021


Kickstart Your Career

Get certified by completing the course

Get Started