React, JavaScript

[JavaScript] 숫자 배열의 최소,최대 값 구하기

택이더 2022. 9. 6. 17:37

알고리즘 문제를 풀며 배열의 최소,최대 값을 구할 시 기존의 min, max를 사용하면

NaN 값이 생기게 되어 해결법을 찾아 정리해보고자 한다.

 

  • 기존 최대 또는 최소 함수를 사용하는 예시.
Math.max(1, 2, 3)    // 3
Math.min(1, 2, 3)    // 1

 

  • 하지만 만약 숫자의 배열을 가지고 있고 그 안에서 최소값과 최대값을 찾고자 한다면 다음과 같은 현상이 발생한다.
  • Math.min 또는 Math.max 메서드에 배열을 넘기면 NaN이 나온다.
const nums = [1, 2, 3]
Math.min(nums)    // NaN
Math.max(nums)    // NaN

 

  • 그 이유는 Math.min 또는 Math.max 함수는 배열이 아니라 고유한 변수를 기대하기 때문이다. 이를 해결 하기 위해  ES6/ES2015 적용 방법을 사용해야 한다.
var nums = [1, 2, 3]
Math.min.apply(Math, nums)    // 1
Math.max.apply(Math, nums)    // 3
Math.min.apply(null, nums)    // 1
Math.max.apply(null, nums)    // 3
  • 위 방법도 있지만 ES6/ES2016의 destructing 할당을 사용하면 더욱 간단해진다. destructing 할당 구문은 Array 또는 개체에서 데이터를 추출하여 별도의 변수로 만들 수 있는 JavaScript 식이다.
const nums = [1, 2, 3]
Math.min(...nums)    // 1
Math.max(...nums)    // 3

 

  • 배열 앞에서 Array를 개별 변수로 변환하여 함수에 전송한다. 이는 다음과 같다.
Math.min(1, 2, 3)
Math.max(1, 2, 3)