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

JavaScript 배열에서 최솟값과 최댓값을 찾는 방법

JavaScript에서 배열의 최소 요소와 최대 요소를 구하려면 Math.min()Math.max() 메서드를 사용하면 됩니다. 다만 이 메서드들은 개별 숫자 인수를 받기 때문에, 배열을 그대로 전달할 수 없습니다.

apply()를 활용한 방법

배열의 요소들을 인수로 전달하려면 Function.prototype.apply()를 활용하는 것이 가장 간단한 방법입니다. apply()는 두 번째 인수로 배열을 받아 해당 요소들을 개별 인수처럼 펼쳐서 전달해 주기 때문입니다.

다음 예제 코드를 실행하여 배열에서 최댓값과 최솟값을 찾아보세요.

예제 코드

<html>
   <body>
      <script>
         var arr = [50, 30, 70, 60];
         document.write("Maximum Value: " + Math.max.apply(null, arr));
         document.write("<br>Minimum Value: " + Math.min.apply(null, arr));
      </script>
   </body>
</html>

실행 결과

Maximum Value: 70
Minimum Value: 30

스프레드 연산자(ES6) 활용하기

ES6 이상 환경이라면 스프레드 연산자(...)를 사용하는 것이 더 간결하고 가독성이 좋습니다.

const arr = [50, 30, 70, 60];
console.log(Math.max(...arr)); // 70
console.log(Math.min(...arr)); // 30

주의 사항

Math.max.apply(null, arr)Math.max(...arr) 방식은 배열의 크기가 매우 클 경우(수만 개 이상의 요소) 호출 스택 한도 초과 오류가 발생할 수 있습니다. 이런 경우에는 reduce() 메서드를 사용해 반복적으로 비교하는 것이 안전합니다.

const max = arr.reduce((a, b) => Math.max(a, b));
const min = arr.reduce((a, b) => Math.min(a, b));

정리하면, 일반적인 경우에는 apply() 또는 스프레드 연산자를 사용하고, 대용량 배열에서는 reduce()를 사용하는 것이 좋습니다.