어제 오늘 내일

[Javascript] 배열에서 최대값, 최소값 구하기 본문

IT/Javascript

[Javascript] 배열에서 최대값, 최소값 구하기

hi.anna 2021. 1. 7. 08:26

 

Javascript 배열의 여러 원소들 중 최대값, 최소값을 구하는 방법을 정리합니다.

 

1. Math.max(), Math.min() 소개
2. Function.prototype.apply() 사용하기
3. Spread Operator(전개 연산자) 사용하기

 

1. Math.max(), Math.min() 소개

const maxValue = Math.max(1, 2, 3, 4, 5);
const minValue = Math.min(1, 2, 3, 4, 5);

document.write('Max : ' + maxValue);
document.write('<br>');
document.write('Min : ' + minValue);

 

Math.max()와 Math.min() 함수는

파라미터로 입력받은 숫자들 중 최대값과 최소값을 구해서 리턴하는 함수입니다.

이 함수를 사용하면

위와 같이 파라미터로 여러 숫자를 전달해서 최대값과 최소값을 구할 수 있지만,

우리가 지금 하려고 하는 것은 배열에 담긴 여러 숫자중 최대값과 최소값을 구하는 것입니다.

이 함수들을 사용해서 배열의 최대값과 최소값을 구하려면,

배열의 원소들을 하나씩 꺼내서,

Math.max(), Math.min() 함수의 파라미터로 전달하면 됩니다.

이렇게 하기 위해 여기서는

Function.prototype.apply() 메소드를 사용하는 방법과

Spread Operator(전개 연산자)를 사용하는 방법을 소개합니다.

 

 

2. Function.prototype.apply() 사용하기

const arr = [1, 2, 3, 4, 5];
const maxValue = Math.max.apply(null, arr);
const minValue = Math.min.apply(null, arr);

document.write('Max : ' + maxValue);
document.write('<br>');
document.write('Min : ' + minValue);

 

Function.prototype.apply() 메소드는 Javascript에서 함수를 호출하는 여러가지 방법 중의 하나입니다.

일반적으로 함수를 호출할 때, 

'함수명(파라미터)'의 형식으로 호출하지만,

함수의 apply() 메소드를 호출해서 함수를 호출할 수도 있습니다.

apply() 메소드는

파라미터로, 함수에서 사용할 this객체호출하는 함수로 전달할 파라미터를 입력받습니다.

이 때 apply() 메소드의 2번째 파라미터(호출하는 함수로 전달할 파라미터)는 배열 형태로 입력합니다.

 

위 예제를 보면,

Math.max.apply(null, arr);

Math.max() 함수의 apply() 메소드를 호출하고 있습니다.

apply() 메소드의 첫번째 파라미터로는

Math.max() 함수 내부에서 사용할 this객체를 전달해야 하는데,

여기서는 따로 this객체를 지정해 줄 필요가 없으므로 null을 전달하였습니다.

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 maxValue = Math.max(...arr);
const minValue = Math.min(...arr);

document.write('Max : ' + maxValue);
document.write('<br>');
document.write('Min : ' + minValue);

 

Spread Operator(전개 연산자)는 ES6 문법으로

'...' 이렇게 점 3개로 표현하고,

객체나 배열의 원소들을 하나씩 꺼내어서 펼쳐서 리턴합니다.

즉, Math.max(...arr)와 같이 작성해주면 실제로는

Math.max(1, 2, 3, 4, 5)와 같이 실행되게 됩니다.

개인적으로는 가독성이 좋기 때문에, 이 방법을 사용하는 것을 선호합니다.

 

 


 

배열의 최대값, 최소값을 구하는 방법을 정리해 보았습니다.

 

 

 

 

반응형
Comments