Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript reduce 메서드로 여러 배열에서 각각 가장 큰 숫자 추출하기

중첩된 배열에서 각 하위 배열의 최댓값을 한 번에 구하고 싶다면 reduce() 메서드와 Math.max() 함수를 함께 사용하면 됩니다.

reduce()는 배열을 순회하면서 누적값(accumulator)을 만들어가는 메서드입니다. 여기에 스프레드 연산자(...)로 펼친 각 하위 배열을 Math.max()에 전달해 최댓값을 계산하고, 그 값을 결과 배열에 차례대로 담으면 됩니다.

코드 예시

const getBiggestNumberFromArraysPassed = allArrays =>
   allArrays.reduce((acc, currentArray) => {
      acc.push(Math.max(...currentArray));
      return acc;
   }, []);

console.log(getBiggestNumberFromArraysPassed([[45, 78, 3, 1], [50, 34, 90, 89], [32, 10, 90, 99]]));

동작 원리

  • reduce()의 초기값으로 빈 배열([])을 지정합니다.
  • reduce()가 [[45, 78, 3, 1], [50, 34, 90, 89], [32, 10, 90, 99]]의 각 하위 배열을 하나씩 순회합니다.
  • Math.max(...currentArray)는 스프레드 연산자로 하위 배열의 요소들을 개별 숫자로 펼쳐 그중 최댓값을 계산합니다.
  • 계산된 최댓값을 acc 배열에 push하여, 최종적으로 모든 하위 배열의 최댓값만 모인 새로운 배열을 반환합니다.

실행 방법

위 코드를 Node.js 환경에서 실행하려면 파일을 저장한 뒤(예: demo94.js) 터미널에서 다음 명령어를 입력합니다.

node demo94.js

출력 결과

PS C:\Users\Amit\JavaScript-code> node demo94.js
[ 78, 90, 99 ]

각 하위 배열 [45, 78, 3, 1], [50, 34, 90, 89], [32, 10, 90, 99]의 최댓값인 78, 90, 99가 순서대로 새로운 배열에 담겨 출력됩니다. 이처럼 reduce()와 Math.max()를 조합하면 반복문 없이도 중첩 배열의 최댓값들을 깔끔하게 추출할 수 있습니다.