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

JavaScript 배열에서 최소값을 찾는 2가지 방법 – Math.min()과 sort() 활용하기

JavaScript에서 배열에 담긴 값들 중 가장 작은 숫자, 즉 최소값을 구해야 하는 경우가 자주 있습니다. 이때 Math.min() 함수와 sort() 메서드를 활용하면 간단하게 해결할 수 있습니다. 아래에서 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.

1) Math.min() 함수 사용하기

Math.min() 함수는 인수로 전달된 값들을 하나하나 검사하여 그중 가장 작은 값을 반환합니다. 배열 전체를 한 번에 처리하려면 apply() 메서드를 함께 사용하는 것이 일반적입니다.

아래 예제를 통해 동작 방식을 확인해 보겠습니다.

예제 코드

<html>
<body>
<script>
    function minimum(value) {
        if (toString.call(value) !== "[object Array]")
            return false;
        return Math.min.apply(null, value);
    }
    document.write(minimum([6,39,55,1,44]));
</script>
</body>
</html>

실행 결과

1

위 코드에서는 먼저 전달된 인수가 실제 배열인지 검사한 후, Math.min.apply(null, value)를 통해 배열의 모든 요소를 개별 인수처럼 넘겨줍니다. 그 결과 배열 [6, 39, 55, 1, 44] 중 가장 작은 값인 1이 출력됩니다.

참고로 ES6(ES2015) 이상 환경이라면 스프레드 연산자를 사용해 더욱 간결하게 표현할 수도 있습니다.

const min = Math.min(...[6, 39, 55, 1, 44]); // 결과: 1

2) sort() 메서드 사용하기

sort() 메서드에 비교 함수를 함께 사용하면 배열의 요소를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 정렬이 완료된 배열에서 length 속성을 이용하면 다음과 같이 최소값을 손쉽게 찾을 수 있습니다.

예제 코드

<html>
<body>
<input type ="button" onclick="myFunction()" value = "clickme">
<p id="min"></p>
<script>
    var numbers = [6,39,55,1,44];
    document.getElementById("min").innerHTML = numbers;
    function myFunction() {
        numbers.sort(function(a, b){return b - a});
        document.getElementById("min").innerHTML = numbers;
        document.write(numbers[numbers.length-1]);
    }
</script>
</body>
</html>

실행 결과

프로그램을 실행한 뒤 화면의 'clickme' 버튼을 클릭하면, 비교 함수 function(a, b){return b - a}에 의해 배열이 내림차순으로 정렬됩니다. 이후 numbers[numbers.length-1]로 배열의 마지막 요소, 즉 가장 작은 값을 가져와 출력합니다.

1

마무리

정리하면 다음과 같습니다.

  • Math.min.apply(null, 배열): 배열의 모든 요소를 검사해 즉시 최소값을 반환하며, 성능 면에서도 유리합니다.
  • sort() + length 속성: 배열을 정렬한 뒤 마지막(또는 첫 번째) 요소를 꺼내는 방식으로, 원본 배열의 순서가 변경된다는 점에 유의해야 합니다.

단순히 최소값만 필요하다면 Math.min() 방식을, 정렬된 배열 자체가 필요한 상황이라면 sort() 방식을 선택하는 것이 좋습니다.