Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript를 사용하여 배열에서 가장 빈번한 단어 찾기

<시간/>

문제

첫 번째 인수로 영어 소문자 알파벳 문자열의 배열(arr)을 취하는 JavaScript 함수를 작성해야 합니다. 함수에 대한 두 번째 인수는 숫자 num(num

우리 함수는 배열 arr에서 가장 빈번한 요소의 수를 반환해야 합니다.

응답은 빈도에 따라 가장 높은 것에서 가장 낮은 것으로 정렬되어야 합니다. 두 단어의 빈도가 같으면 알파벳 순서가 낮은 단어가 먼저 옵니다.

예를 들어, 함수에 대한 입력이

인 경우

입력

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