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

JavaScript로 문자열 배열에서 가장 짧은 요소 찾기

이번 글에서는 문자열 배열을 입력받아 그중 길이가 가장 짧은 문자열을 찾아 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

단순히 for 반복문을 사용해 배열을 순회하며 가장 짧은 문자열의 인덱스를 저장하는 방식으로도 구현할 수 있지만, 여기서는 배열 메서드인 reduce()를 활용해 더욱 간결하게 처리해 보겠습니다.

reduce()의 누적값(accumulator)에는 지금까지 발견된 가장 짧은 문자열의 인덱스(ind)길이(len)를 함께 저장합니다. 초기값으로 인덱스는 -1, 길이는 Infinity를 설정하면, 어떤 문자열이든 첫 번째 비교에서 조건이 충족되어 값이 갱신됩니다.

예제

전체 코드는 다음과 같습니다.

const arr = ['this', 'can', 'be', 'some', 'random', 'sentence'];
const findSmallest = arr => {
    const creds = arr.reduce((acc, val, index) => {
        let { ind, len } = acc;
        if(val.length < len){
            len = val.length;
            ind = index;
        };
        return { ind, len };
    }, {
        ind: -1,
        len: Infinity
    });
    return arr[creds['ind']];
};
console.log(findSmallest(arr));

위 코드에서 findSmallest 함수는 배열의 각 문자열을 순회하며 현재 저장된 최소 길이(len)보다 짧은 문자열을 만나면 해당 문자열의 길이와 인덱스를 갱신합니다. 모든 순회가 끝나면 최종적으로 저장된 인덱스(ind)를 이용해 원래 배열에서 가장 짧은 문자열을 꺼내 반환합니다.

출력 결과

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

be

배열 arr의 요소 중 'be'가 두 글자로 가장 짧기 때문에 정상적으로 'be'가 출력되는 것을 확인할 수 있습니다. 이 방식은 한 번의 순회(O(n))만으로 결과를 얻을 수 있어 효율적이며, 필요하다면 반환값을 creds['ind']로 바꿔 인덱스 자체를 반환하도록 응용할 수도 있습니다.