새소식

FE/JavaScript

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

  • -

Javascript에서 배열의 여러 원소들 중에서 최댓값, 최솟값을 구하는 방법을 정리해보자.

 

0. Math.max(), Math.min() 이란?
1. Function.prototype.apply() 사용
2. Spread Operator 사용

 

0. Math.max(), Math.min() 이란?

Math.max()와 Math.min()은 파아리터로 입력받은 '숫자'들 중 최대값과 최소값을 구해서 리턴하는 함수이다.

 

 

그렇다면, '배열'에 담긴 여러 숫자 중 최소값과 최대값을 구하려면 어떻게 해야할까?

배열에 담긴 원소들을 하나씩 꺼내서, Math.max()함수와 Math.min()함수의 파라미터로 전달하면 된다.

 

이렇게 하기 위해서는 크게 두 가지 방법을 사용할 수 있다.

  1. Function.prototype.apply() 메소드를 사용
  2. Spread Operator(전개 연산자)를 사용

 

1. Function.prototype.apply() 사용

  • JavaScript에서 apply() 메소드는 함수를 호출하는 또 다른 방법 중 하나
  • 일반적으로는 함수를 호출할 때 함수명(파라미터)와 같은 형식을 사용하지만, apply() 메소드를 사용하면 함수를 호출할 수 있다.
  • apply() 메소드는 두 개의 파라미터를 받는다.
    • 첫 번째 파라미터:  함수 내에서 사용할 this 객체
    • 두 번째 파라미터: 호출할 함수로 전달할 파라미터들을 배열 형태로 받습니다.

 

const numbers = [5, 6, 2, 3, 7];

const max = Math.max.apply(null, numbers);

console.log(max);
// Expected output: 7

const min = Math.min.apply(null, numbers);

console.log(min);
// Expected output: 2

 

위 예제를 보면,

Math.max.apply(null,numbers);

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

 

  • apply() 메소드의 첫 번째 파라미터
    • Math.max() 함수 내부에서 사용할 수 있는 this객체 전달
    • 따로 this 객체를 지정해줄 필요가 없으면 null을 전달
  • apply() 메소드의 두 번째 파라미터
      • Math.max() 함수로 전달할 파라미터를 배열 형태로 넣어준다.
      • Math.max() 함수에 전달할 파라미터 5개 (1,2,3,4,5)를 배열 형태로 만들어 전달(numbers)

 

=> Math.max(), Math.min() 함수에 배열의 원소들을 풀어서 전달하기 위해

apply() 메소드를 활용한 것

 

 

https://hianna.tistory.com/487

 

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

Javascript 배열의 여러 원소들 중 최대값, 최소값을 구하는 방법을 정리합니다. 1. Math.max(), Math.min() 소개 2. Function.prototype.apply() 사용하기 3. Spread Operator(전개 연산자) 사용하기 1. Math.max(), Math.min()

hianna.tistory.com

 

2. Spread Operator(전개 연산자) 사용

const numbers = [5, 6, 2, 3, 7];

const maxValue = Math.max(...numbers);
const minValue = Math.min(...numbers);

console.log(max);
// Expected output: 7

console.log(min);
// Expected output: 2

 

Spread Operator(전개 연산자)는 ES6 문법으로 '...' 이렇게 점 3개로 표현하고, 객체나 배열의 원소들을 하나씩 꺼내어서 펼쳐서 리턴한다.

즉, Math.max(...numbers)와 같이 작성해주면 실제로는 Math.max(5,6,2,3,7)와 같이 실행되게 됩니다.

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.