본문 바로가기
개발

map, filter, reduce 제대로 쓰는 법

by Kyutree 2026. 1. 31.

오늘 아침, 출근길에 들른 카페에서 주문이 밀려 15분이나 기다렸습니다.

만약 카페 직원이 주문 목록을 효율적으로 처리할 수 있다면 어땠을까요?

프로그래밍에서도 마찬가지입니다.

데이터를 효율적으로 처리하는 것은 매우 중요합니다.

JavaScript에서 `map()`, `filter()`, `reduce()`는 배열을 효과적으로 다루기 위한 핵심 도구입니다.

이 세 가지 메서드를 제대로 활용하면 코드를 간결하게 유지하면서도 강력한 데이터 처리가 가능합니다.

이번 글에서는 `map()`, `filter()`, `reduce()`를 완벽하게 사용하는 방법을 알아보겠습니다.

 

map(): 배열의 변환 마법사

 

`map()`은 배열의 각 요소를 변환하여 새로운 배열을 생성하는 데 사용됩니다.

각 요소에 특정 함수를 적용한 결과를 모아 새로운 배열로 반환하죠.

예를 들어, 숫자 배열의 각 요소를 제곱하고 싶다면 `map()`을 사용할 수 있습니다.

`map()`은 원본 배열을 변경하지 않고 새로운 배열을 반환한다는 점이 중요합니다.

이는 불변성을 유지하는 데 도움이 되며, 예측 가능한 코드를 작성하는 데 기여합니다.

최근에는 React와 같은 프론트엔드 프레임워크에서 데이터를 렌더링할 때 `map()`을 아주 많이 사용합니다.

 

filter(): 조건에 맞는 요소만 쏙쏙

 

`filter()`는 배열에서 특정 조건을 만족하는 요소만 선택하여 새로운 배열을 생성합니다.

주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.

예를 들어, 숫자 배열에서 짝수만 걸러내고 싶다면 `filter()`를 사용하면 됩니다.

`filter()` 역시 원본 배열을 변경하지 않고 새로운 배열을 반환합니다.

`filter()`를 사용하면 코드를 더 읽기 쉽게 만들 수 있으며, 복잡한 조건문을 간결하게 표현할 수 있습니다.

최근에는 데이터 분석이나 검색 기능 구현 시 특정 조건에 맞는 데이터만 추출하는 데 많이 활용됩니다.

 

reduce(): 배열을 하나의 값으로 응축

 

`reduce()`는 배열의 모든 요소를 하나의 값으로 줄이는 데 사용됩니다.

배열의 각 요소에 대해 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

리듀서 함수는 누적기(accumulator)와 현재 값(current value)을 인자로 받습니다.

누적기는 이전 리듀서 함수의 결과값이며, 초기값(initial value)을 설정할 수도 있습니다.

예를 들어, 숫자 배열의 모든 요소를 더하여 총합을 구하고 싶다면 `reduce()`를 사용하면 됩니다.

`reduce()`는 배열의 합계, 평균, 최댓값, 최솟값 등을 계산하는 데 유용하며, 객체 형태로 데이터를 집계하는 데에도 활용할 수 있습니다.

accumulator는 정수, 문자열, 객체 등 다양한 형태가 될 수 있습니다.

 

map(), filter(), reduce() 함께 쓰기: 시너지 효과 극대화

 

`map()`, `filter()`, `reduce()`는 함께 사용하여 더욱 강력한 데이터 처리를 수행할 수 있습니다.

예를 들어, 숫자 배열에서 짝수만 걸러낸 후 각 숫자를 제곱하여 총합을 구할 수 있습니다.

이러한 연산을 `map()`, `filter()`, `reduce()`를 순차적으로 적용하여 간단하게 구현할 수 있습니다.

함수형 프로그래밍 스타일로 코드를 작성하면 가독성이 향상되고 유지보수가 쉬워집니다.

최근에는 데이터 파이프라인 구축 시 이 세 가지 메서드를 조합하여 복잡한 데이터 변환 작업을 수행하는 경우가 많습니다.

 

성능 고려 사항 및 최적화

 

`map()`, `filter()`, `reduce()`는 강력한 도구이지만, 배열의 크기가 커질수록 성능에 영향을 미칠 수 있습니다.

각 메서드는 배열을 순회하면서 새로운 배열을 생성하므로, 불필요한 중간 배열 생성을 줄이는 것이 중요합니다.

배열을 한 번만 순회하면서 모든 연산을 수행할 수 있다면 성능을 최적화할 수 있습니다.

또한, 불필요한 연산을 피하고, 최적화된 알고리즘을 사용하는 것도 중요합니다.

최근에는 Lodash나 Underscore.js와 같은 라이브러리를 사용하여 성능을 향상시키는 방법도 많이 사용됩니다.

 

`map()`, `filter()`, `reduce()`는 JavaScript에서 배열을 다루는 데 필수적인 도구입니다.

각 메서드의 역할과 사용법을 정확히 이해하고, 함께 사용하는 방법을 익히면 효율적인 코드 작성이 가능합니다.

성능을 고려하여 최적화된 코드를 작성하는 것도 중요합니다.

이 세 가지 메서드를 자유자재로 사용하여 데이터 처리 능력을 한 단계 업그레이드해보세요.

최근 프론트엔드 개발에서 데이터 처리가 중요해짐에 따라, 이 메서드들의 중요성은 더욱 커지고 있습니다.