Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm (các) từ thường gặp nhất trong một mảng bằng JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng, arr, các chuỗi của bảng chữ cái viết thường tiếng Anh làm đối số đầu tiên. Đối số thứ hai cho hàm của chúng ta là một số, num (num

Hàm của chúng ta phải trả về num phần tử thường xuyên nhất trong mảng arr.

Câu trả lời nên được sắp xếp theo tần suất từ ​​cao nhất đến thấp nhất. Nếu hai từ có cùng tần suất, thì từ có thứ tự bảng chữ cái thấp hơn đứng trước.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

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

Giải thích đầu ra

"the", "is", "sunny" và "day" là bốn từ thường gặp nhất,

với số lần xuất hiện lần lượt là 4, 3, 2 và 1..

Ví dụ

Sau đây là mã -

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));

Đầu ra

[ 'the', 'is', 'sunny', 'day' ]