Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열에서 가장 많이 등장하는 과일 찾기 - 빈도수 계산 방법

문자열 데이터를 다루다 보면 특정 값이 몇 번이나 등장하는지 세어야 하는 경우가 자주 있습니다. 이번 글에서는 쉼표(,)로 구분된 과일 이름 문자열에서 가장 많이 등장하는 과일을 찾는 JavaScript 함수를 만들어 보겠습니다.

문제 상황

다음과 같이 쉼표로 구분된 과일 이름 문자열이 있다고 가정해 보겠습니다.

const str = 'Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana';

우리가 작성할 함수는 이러한 문자열을 입력받아, 반복문을 활용해 어떤 과일 이름이 문자열에서 가장 많은 횟수로 등장하는지 찾아내야 합니다.

해결 코드

다음은 문제를 해결하는 JavaScript 코드입니다.

const str =
'Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grap
e,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,G
rape,Orange,Orange,Apple,Apple,Banana';
const findMostFrequent = str => {
    const strArr = str.split(',');
    const creds = strArr.reduce((acc, val) => {
        if(acc.has(val)){
            acc.set(val, acc.get(val) + 1);
        }else{
            acc.set(val, 1);
        };
        return acc;
    }, new Map());
    return Array.from(creds).sort((a, b) => b[1] - a[1])[0][0];
};
console.log(findMostFrequent(str));

코드 동작 원리

이 함수의 핵심 로직을 단계별로 살펴보겠습니다.

1. 문자열 분리

split(',') 메서드를 사용해 쉼표를 기준으로 문자열을 배열로 분리합니다. 각 과일 이름이 배열의 개별 요소가 됩니다.

2. Map으로 빈도수 집계

reduce() 메서드와 Map

3. 최빈값 추출

Array.from()으로 Map을 배열로 변환한 뒤, 등장 횟수를 기준으로 내림차순 정렬하고 첫 번째 요소의 과일 이름을 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

Banana

예제 문자열에서 'Banana'는 총 8번 등장하여 다른 과일보다 가장 많은 빈도를 기록했기 때문에 최종 결과로 반환됩니다.