이번 글에서는 문자열 배열을 입력받아 그중 가장 긴 문자열을 찾아 반환하는 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));코드 동작 방식
위 코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.
- 빈 배열 처리:
arr?.length옵셔널 체이닝을 활용해 배열이 비어 있거나 null·undefined인 경우 빈 문자열''을 반환하여 오류를 미리 방지합니다. - reduce() 활용:
reduce()메서드는 배열의 각 요소를 순회하며 누적값(acc)과 현재값(val)을 하나씩 비교합니다. - 길이 비교: 삼항 연산자를 통해 누적값의 길이가 현재값보다 크거나 같으면 기존 누적값을 유지하고, 그렇지 않으면 현재값을 새로운 누적값으로 교체합니다.
- 결과 반환: 모든 요소를 순회하면 최종적으로 가장 긴 문자열이 남게 되며, 이 값이 함수의 반환값이 됩니다.
실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
aaaaaaaa
마무리
이처럼 reduce() 메서드를 활용하면 별도의 반복문 없이도 간결하게 배열에서 가장 긴 문자열을 찾을 수 있습니다. 또한 원본 배열을 전혀 변경하지 않기 때문에 불변성(immutability)을 유지해야 하는 상황에서도 안전하게 사용할 수 있습니다.