자바스크립트 배열안의 원소들 중 최대값, 최소값 구하는 방법 정리
1. Math.max(), Math.min()
파라미터로 입력받은 숫자들 중 최대값과 최소값 구해 리턴하는 함수
const maxNum = Math.max(1, 2, 3, 4, 5); //5
const minNum = Math.min(1, 2, 3, 4, 5); //1
배열에 담긴 여러 숫자 중 최대값과 최소값을 구하기 위해서는 배열의 원소들을 하나씩 꺼내
Math.max(), Math.min() 함수의 파라미터로 전달하면 됨
이렇게 하기 위해서 Function.prototype.apply() 메소드를 사용하거나 Spread Operator(전개 연산자)를 사용함
2. Function.prototype.apply()
func.apply(thisArg, [argsArray])
- thisArg
옵션. func를 호출하는데 제공될 this의 값이며 this는 메소드에 의해 실제로 보여지는 값이 아닐 수 있음
메소드가 non-strict mode(엄격하지않은 모드)의 코드 함수일 경우, null 과 undefined 가 전역 객체로 대체, 기본값 제한됨
(Strict mode : 엄격모드)
- argsArray
옵션. func이 호출되어야 하는 인수를 지정하는 유사 배열 객체, 함수에 제공된 인수가 없을 때 null 또는 undefined.
const arr = [1, 2, 3, 4, 5];
const maxNum = Math.max.apply(null, arr); //5
const minNum = Math.min.apply(null, arr); //1
자바스크립트에서 함수를 호출하는 여러가지 방법 중 하나.
일반적으로 함수 호출시 '함수명(파라미터)' 형식으로 호출하지만, 함수의 apply() 메소드 호출해 함수 호출 가능
apply() 메소드는 파라미터로 함수에서 사용할 this객체와 호출하는 함수로 전달할 파라미터 입력받음
이 때 apply() 메소드의 2번째 파라미터(호출하는 함수로 전달할 파라미터)는 배열 형태로 입력함!!
위 예제를 봤을 때 Math.max.apply(null, arr)는 Math.max() 함수의 apply() 메소드를 호출하고 있음
1. apply() 메소드의 첫번째 파라미터로 Math.max() 함수 내부에서 사용할 this 객체를 전달해야함
하지만 여기서는 따로 this 객체를 지정해 줄 필요가 없어 null 을 전달한 것!
2. apply() 메소드의 두번째 파라미터로 Math.max() 함수로 전달할 파라미터를 배열 형태로 넣어줌
Math.max() 함수에 전달할 파라미터 5개 (1, 2, 3, 4, 5)를 배열 형태로 만들어 전달(arr)함
결과적으로 Math.max(), Math.min() 함수에 배열의 원소들을 풀어 전달하기위해 apply() 메소드 활용한 것!
3. Spread Operator(전개 연산자)
const arr = [1, 2, 3, 4, 5];
const maxNum = Math.max(...arr); //5
const minNum = Math.min(...arr); //1
전개 연산자는 ES6 문법으로 '...' (점 3개)로 표현 하며 객체나 배열의 원소들을 하나씩 꺼내 펼처 리턴함
즉, Math.max(...arr) 는 Math.max(1, 2, 3, 4, 5)와 같이 실행하게 됨
[출처]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
https://hianna.tistory.com/487
'개발 > Javascript' 카테고리의 다른 글
[JS] 전개 구문 (Spread syntax) (1) | 2022.09.23 |
---|---|
[JS] 배열 정렬 방법 (오름차순, 내림차순) (1) | 2022.09.21 |
[JS] 전위 연산자, 후위 연산자 (0) | 2022.08.23 |
[JS] for 문에서 var 대신 let 사용 (0) | 2022.08.23 |
[JS] 형 변환 (0) | 2022.08.20 |