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

JavaScript 동적 타입 배열에서 가장 큰 숫자 찾는 방법

이번 글에서는 숫자, 문자열, 그리고 undefined, null, NaN 같은 falsy 값들이 뒤섞여 있는 배열에서 가장 큰 숫자를 찾아 반환하는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 입력 배열이 다음과 같다면,

const arr = [23, 'hello', undefined, null, 21, 65, NaN, 1, undefined, 'hii'];

함수의 출력 결과는 65가 되어야 합니다.

구현 아이디어

핵심은 배열을 순회하면서 각 요소를 단항 더하기 연산자(+)로 숫자로 변환하고, 변환 결과가 유효한 숫자일 때만 최댓값과 비교하는 것입니다. 문자열이나 undefined, null, NaN은 숫자로 변환하면 NaN 또는 0으로 평가되므로 조건문 하나만으로 자연스럽게 걸러낼 수 있습니다.

예제 코드

const arr = [23, 'hello', undefined, null, 21, 65, NaN, 1, undefined, 'hii'];
const pickBiggest = arr => {
    let max = -Infinity;
    for(let i = 0; i < arr.length; i++){
       if(!+arr[i]){
          continue;
       };
       max = Math.max(max, +arr[i]);
   };
   return max;
};
console.log(pickBiggest(arr));

실행 결과

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

65

코드 상세 설명

1. 초기값 설정max 변수를 -Infinity로 초기화합니다. 이는 어떤 유한한 숫자보다도 작은 값이므로, 배열 내 어떤 숫자와 비교해도 안전하게 교체됩니다.

2. 유효성 검사!+arr[i] 조건은 해당 요소를 숫자로 변환한 결과가 NaN이거나 0일 때 참이 됩니다. 즉, 숫자로 해석할 수 없는 값은 continue로 건너뛰고 다음 요소로 넘어갑니다.

3. 최댓값 갱신 — 유효한 숫자라면 Math.max()를 이용해 기존 최댓값과 비교하여 더 큰 값을 max에 저장합니다.

4. 결과 반환 — 모든 요소를 순회한 뒤 max를 반환하면, 배열에서 가장 큰 숫자를 얻을 수 있습니다.

이처럼 동적 타입 언어인 JavaScript에서는 타입이 섞인 데이터를 다룰 때 명시적인 타입 변환과 유효성 검사를 결합하면, 별도의 필터링 단계 없이도 간결하고 안전하게 원하는 값을 추출할 수 있습니다.