알고리즘 문제를 풀며 배열의 최소,최대 값을 구할 시 기존의 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)
'React, JavaScript' 카테고리의 다른 글
[JavaScript] forEach()를 사용하여 key-value 생성하기 (0) | 2022.09.16 |
---|---|
[JavaScript] 배열의 중복 요소 제거하기 (0) | 2022.09.13 |
[JavaScript] join() (0) | 2022.08.23 |
[백준] JavaScript로 문제 풀기(Node.js 입출력 관리) (0) | 2022.08.14 |
리액트(React) (0) | 2022.07.16 |