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

JavaScript로 배열의 최댓값과 최솟값 차이 구하기

이 글에서는 숫자로 이루어진 배열을 입력받아, 그중 가장 큰 값과 가장 작은 값의 차이를 반환하는 함수를 작성하는 방법을 알아보겠습니다.

문제 접근 방식

배열을 한 번씩 순회하면서 Math.min()Math.max() 메서드를 사용해 최솟값과 최댓값을 갱신한 뒤, 마지막에 두 값의 차이를 반환하면 됩니다.

먼저 예제로 사용할 배열을 생성합니다.

const arr = [23, 54, 65, 76, 87, 87, 431, -6, 22, 4, -454];

구현 코드

배열의 첫 번째 요소로 최솟값과 최댓값을 초기화하고, 이후 요소들을 순회하며 값을 비교해 갱신하는 방식으로 구현할 수 있습니다.

const arr = [23, 54, 65, 76, 87, 87, 431, -6, 22, 4, -454];

const arrayDifference = (arr) => {
    let min, max;
    arr.forEach((num, index) => {
        if (index === 0) {
            // 첫 번째 요소로 min과 max 초기화
            min = num;
            max = num;
        } else {
            // 현재 요소와 비교하여 최솟값·최댓값 갱신
            min = Math.min(num, min);
            max = Math.max(num, max);
        }
    });
    return max - min;
};

console.log(arrayDifference(arr));

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

885

더 간결한 대안

전개 연산자(spread operator)를 활용하면 코드를 훨씬 간단하게 만들 수 있습니다.

const arrayDifference = (arr) => Math.max(...arr) - Math.min(...arr);

console.log(arrayDifference(arr)); // 885

다만 전개 연산자 방식은 배열의 크기가 매우 클 경우 스택 오버플로(최대 인자 개수 초과)가 발생할 수 있으므로, 대량의 데이터를 다룰 때는 앞서 소개한 반복문 방식이 더 안전합니다.