배열에서 최댓값 & 최솟값 구하기

marie·2024년 2월 17일
0

JavaScript

목록 보기
1/7
post-thumbnail

JavaScript 배열에서 최댓값과 최솟값을 알아내는 다양한 방법들에 대해 알아보자 ❗

✅ 반복문 사용

반복문을 순회하면서 모든 원소들끼리 비교하여 최댓값과 최솟값을 찾을 수 있다

  <script>
    function max(arr) {
      let max = arr[0];

      for (let i of arr) {
        if (i > max) max = i
      }

      return max;
    }

    function min(arr) {
      let min = arr[0];

      for (let i of arr) {
        if (i < min) min = i
      }

      return min;
    }

    const arr = [7, 2, 3, 4, 3, 4, 8]
    console.log(max(arr));
    console.log(min(arr));
  </script>

✅ Math 내장 객체 사용

JavaScript 내장 객체 Math를 이용해서 최댓값과 최솟값을 구할 수 있다

max( ), min( ) 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 크거나 작은 숫자를 반환한다
아무 값도 전달되지 않으면 -Infinity를 반환하고, 전달된 값이 숫자로 변환되지 않는 경우 NaN를 반환한다
따라서 배열 전체를 전달하는 경우에는 NaN을 반환한다
배열을 인자로 전달하기 위해서는, spread 연산자를 통해 배열의 요소들을 풀어서 전달하면 된다
spread연산자는 ES6에 새롭게 도입된 문법😊

  <script>
    function max(arr) {
      return Math.max(...arr);
    }

    function min(arr) {
      return Math.min(...arr);
    }

    const arr = [7, 2, 3, 4, 3, 4, 8]
    console.log(max(arr));
    console.log(min(arr));

    console.log(Math.max()); 
    console.log(Math.min(arr));
  </script>

ES6 이전에는 어떻게 배열과 Math 객체를 이용해서 최댓값, 최솟값을 찾았을까❓

내장함수와 함께 apply( ) 메소드를 사용했다❗

func.apply(thisArg, [argsArray]);
<script>
    const arr = [7, 2, 3, 4, 3, 4, 8]

    console.log(Math.max.apply(null, arr));
    console.log(Math.min.apply(null, arr));
  </script>

✅ sort 함수로 정렬 후 ...

주어진 배열을 sort( ) 내장 함수를 이용해서 정렬한다
정렬된 배열의 양 끝쪽 요소가 최댓값과 최솟값이 된다

❗주의❗
sort( ) 함수는 원래의 배열이 정렬된다

  <script>
    const arr = [7, 2, 3, 4, 3, 4, 8]
    let min, max;

    arr.sort((a, b) => a - b)  // 오름차순 정렬
    /* arr.sort((a, b) => b - a) 내림차순 정렬 */
    max = arr[arr.length - 1]
    min = arr[0]

    console.log(`max: ${max}, min: ${min}`);
  </script>

💡권장

반복문을 사용하는 방법과 Math의 내장 함수를 사용하는 방법은 성능이 비슷하다
단, Math의 내장 함수는 배열의 요소가 많을 경우 에러가 발생한다😥

따라서, Math.max 함수와 Math.min 함수를 사용하는 것이 가장 바람직하지만 배열의 크기가 너무 큰 경우에는 반복문을 사용하는 것을 추천한다😊

profile
FE developer👩🏻‍💻

0개의 댓글