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

JavaScript 배열에서 가장 긴 문자열 찾기 – reduce() 메서드 활용법

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

이 함수가 충족해야 할 요구 사항은 다음과 같습니다.

  • 문자열 배열을 인자로 받습니다.
  • 배열을 순회하면서 가장 긴 문자열을 찾습니다.
  • 원본 배열의 내용은 변경하지 않은 상태로 결과를 반환합니다.

예제 코드

const arr = ["aaaa", "aa", "aa", "aaaaa", "acc", "aaaaaaaa"];
const findLargest = (arr = []) => {
    if(!arr?.length){
        return '';
    };
    let res = '';
    res = arr.reduce((acc, val) => {
        return acc.length >= val.length ? acc : val;
    });
    return res;
};
console.log(findLargest(arr));

코드 동작 방식

위 코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.

  1. 빈 배열 처리: arr?.length 옵셔널 체이닝을 활용해 배열이 비어 있거나 null·undefined인 경우 빈 문자열 ''을 반환하여 오류를 미리 방지합니다.
  2. reduce() 활용: reduce() 메서드는 배열의 각 요소를 순회하며 누적값(acc)과 현재값(val)을 하나씩 비교합니다.
  3. 길이 비교: 삼항 연산자를 통해 누적값의 길이가 현재값보다 크거나 같으면 기존 누적값을 유지하고, 그렇지 않으면 현재값을 새로운 누적값으로 교체합니다.
  4. 결과 반환: 모든 요소를 순회하면 최종적으로 가장 긴 문자열이 남게 되며, 이 값이 함수의 반환값이 됩니다.

실행 결과

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

aaaaaaaa

마무리

이처럼 reduce() 메서드를 활용하면 별도의 반복문 없이도 간결하게 배열에서 가장 긴 문자열을 찾을 수 있습니다. 또한 원본 배열을 전혀 변경하지 않기 때문에 불변성(immutability)을 유지해야 하는 상황에서도 안전하게 사용할 수 있습니다.