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

JavaScript로 문자열에서 가장 짧은 단어 찾는 방법

문자열을 입력받아 그 안에서 가장 짧은 단어를 찾아 반환하는 JavaScript 함수를 작성해야 합니다.

문제 이해하기

예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다 −

const str = 'This is a sample string';

이 문자열에서 가장 짧은 단어는 "a"(길이 1)이므로, 기대하는 출력 결과는 다음과 같습니다 −

const output = 'a';

해결 접근 방법

이 문제는 다음 단계를 거쳐 해결할 수 있습니다:

  • split(' ') 메서드로 문자열을 공백 기준으로 분리하여 단어 배열을 만듭니다.
  • reduce() 메서드로 배열을 순회하면서 지금까지 발견한 가장 짧은 단어의 길이와 단어 자체를 계속 누적합니다.
  • 현재 단어가 누적된 최소 길이보다 짧으면 길이와 단어를 새로운 값으로 갱신합니다.
  • 순회가 끝나면 최종적으로 저장된 단어를 반환합니다.

구현 코드

위 접근 방식을 실제로 구현한 코드는 다음과 같습니다 −

const str = 'This is a sample string';
const findSmallest = str => {
    const strArr = str.split(' ');
    const creds = strArr.reduce((acc, val) => {
        let { length, word } = acc;
        if(val.length < length){
            length = val.length;
            word = val;
        };
        return { length, word };
    }, {
        length: Infinity,
        word: ''
    });
    return creds.word;
};
console.log(findSmallest(str));

코드 상세 설명

  • split(' '): 문자열을 공백을 기준으로 나누어 ['This', 'is', 'a', 'sample', 'string'] 형태의 배열을 생성합니다.
  • reduce(): 초기값으로 { length: Infinity, word: '' }를 설정합니다. Infinity를 사용하면 어떤 단어든 첫 번째 비교에서 무조건 더 짧게 처리되므로 안전한 시작점이 됩니다.
  • 각 순회마다 현재 단어의 길이가 누적된 최소 길이보다 작으면 lengthword 값을 교체합니다.
  • 모든 단어를 확인한 후에는 최종적으로 저장된 가장 짧은 단어를 반환합니다.

이 방식은 반복문 없이 함수형 프로그래밍 스타일로 깔끔하게 문제를 해결할 수 있다는 장점이 있습니다.

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다 −

a