F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

플랫맵과 맵의 차이점 이해하기

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



플랫맵과 맵의 차이점 이해하기

프로그래밍에서 자주 사용되는 함수형 프로그래밍 기법 중 하나인 플랫맵(flatMap)과 맵(map)에 대해 알아보겠습니다. 이 두 함수는 배열이나 리스트와 같은 컬렉션을 변환하는 데 사용되지만, 그 동작 방식에는 중요한 차이가 있습니다.

왜냐하면 플랫맵은 구조를 변경할 수 있는 반면, 맵은 구조를 유지하면서 값을 변환하기 때문입니다. 이 글에서는 플랫맵과 맵의 차이점을 이해하고, 이를 통해 더 나은 코드를 작성하는 방법을 알아보겠습니다.

먼저, 맵 함수는 주어진 배열의 각 요소에 대해 콜백 함수를 적용하여 새로운 배열을 반환합니다. 이때, 원래 배열의 구조는 그대로 유지됩니다. 예를 들어, 숫자 배열에 2를 곱하는 맵 함수를 작성해보겠습니다.

const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]

위 예제에서 볼 수 있듯이, 맵 함수는 각 요소에 대해 2를 곱한 값을 새로운 배열로 반환합니다. 그러나 배열의 구조는 변하지 않습니다.

반면, 플랫맵 함수는 각 요소에 대해 콜백 함수를 적용한 후, 결과를 평탄화하여 하나의 배열로 반환합니다. 이는 중첩된 배열을 하나의 배열로 만드는 데 유용합니다. 다음 예제를 통해 플랫맵의 동작을 살펴보겠습니다.

const nestedNumbers = [1, [2, 3], [4, 5]];
const flattened = nestedNumbers.flatMap(num => Array.isArray(num) ? num : [num]);
console.log(flattened); // [1, 2, 3, 4, 5]

위 예제에서 플랫맵 함수는 중첩된 배열을 평탄화하여 하나의 배열로 반환합니다. 이처럼 플랫맵은 배열의 구조를 변경할 수 있습니다.



플랫맵의 유연성

플랫맵 함수는 맵 함수보다 더 유연하게 사용할 수 있습니다. 왜냐하면 플랫맵은 배열의 구조를 변경할 수 있기 때문입니다. 예를 들어, 배열의 각 요소를 여러 개의 요소로 변환할 수 있습니다. 다음 예제를 통해 이를 확인해보겠습니다.

const numbers = [1, 2, 3];
const expanded = numbers.flatMap(num => [num, num * 2]);
console.log(expanded); // [1, 2, 2, 4, 3, 6]

위 예제에서 플랫맵 함수는 각 요소를 두 개의 요소로 확장하여 새로운 배열을 반환합니다. 이처럼 플랫맵은 배열의 구조를 자유롭게 변경할 수 있습니다.

또한, 플랫맵은 필터링 기능도 수행할 수 있습니다. 예를 들어, 배열에서 짝수만을 추출하는 플랫맵 함수를 작성해보겠습니다.

const numbers = [1, 2, 3, 4, 5];
const evens = numbers.flatMap(num => num % 2 === 0 ? [num] : []);
console.log(evens); // [2, 4]

위 예제에서 플랫맵 함수는 짝수만을 추출하여 새로운 배열을 반환합니다. 이처럼 플랫맵은 필터링 기능도 수행할 수 있습니다.

플랫맵의 유연성 덕분에 다양한 상황에서 유용하게 사용할 수 있습니다. 그러나 플랫맵을 사용할 때는 배열의 구조가 변경될 수 있다는 점을 항상 염두에 두어야 합니다.



맵의 간결함

맵 함수는 배열의 구조를 유지하면서 값을 변환하는 데 유용합니다. 왜냐하면 맵 함수는 각 요소에 대해 동일한 변환을 적용하기 때문입니다. 다음 예제를 통해 맵 함수의 간결함을 확인해보겠습니다.

const numbers = [1, 2, 3, 4];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16]

위 예제에서 맵 함수는 각 요소에 대해 제곱을 계산하여 새로운 배열을 반환합니다. 이처럼 맵 함수는 간결하게 값을 변환할 수 있습니다.

또한, 맵 함수는 배열의 구조를 유지하기 때문에 코드의 가독성이 높아집니다. 다음 예제를 통해 이를 확인해보겠습니다.

const words = ['hello', 'world'];
const uppercased = words.map(word => word.toUpperCase());
console.log(uppercased); // ['HELLO', 'WORLD']

위 예제에서 맵 함수는 각 요소에 대해 대문자로 변환하여 새로운 배열을 반환합니다. 이처럼 맵 함수는 간결하게 값을 변환할 수 있습니다.

맵 함수는 배열의 구조를 유지하기 때문에 코드의 가독성이 높아집니다. 이는 코드의 유지보수성을 높이는 데 도움이 됩니다.

맵 함수는 간결하게 값을 변환할 수 있기 때문에 다양한 상황에서 유용하게 사용할 수 있습니다. 그러나 맵 함수는 배열의 구조를 변경할 수 없다는 점을 항상 염두에 두어야 합니다.



플랫맵과 맵의 결합

플랫맵과 맵 함수를 결합하여 사용할 수도 있습니다. 왜냐하면 플랫맵과 맵은 서로 보완적인 기능을 제공하기 때문입니다. 다음 예제를 통해 플랫맵과 맵의 결합을 확인해보겠습니다.

const numbers = [1, 2, 3];
const result = numbers
    .map(num => [num, num * 2])
    .flatMap(pair => pair);
console.log(result); // [1, 2, 2, 4, 3, 6]

위 예제에서 맵 함수는 각 요소를 두 개의 요소로 확장하고, 플랫맵 함수는 이를 평탄화하여 하나의 배열로 반환합니다. 이처럼 플랫맵과 맵을 결합하여 사용할 수 있습니다.

또한, 플랫맵과 맵을 결합하여 복잡한 변환을 수행할 수도 있습니다. 다음 예제를 통해 이를 확인해보겠습니다.

const numbers = [1, 2, 3];
const result = numbers
    .flatMap(num => [num, num * 2])
    .map(num => num + 1);
console.log(result); // [2, 3, 3, 5, 4, 7]

위 예제에서 플랫맵 함수는 각 요소를 두 개의 요소로 확장하고, 맵 함수는 각 요소에 1을 더하여 새로운 배열을 반환합니다. 이처럼 플랫맵과 맵을 결합하여 복잡한 변환을 수행할 수 있습니다.

플랫맵과 맵을 결합하여 사용할 때는 각 함수의 동작 방식을 잘 이해하고 있어야 합니다. 왜냐하면 플랫맵과 맵은 서로 다른 방식으로 배열을 변환하기 때문입니다.

플랫맵과 맵을 결합하여 사용할 때는 각 함수의 동작 방식을 잘 이해하고 있어야 합니다. 이는 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.



결론

플랫맵과 맵 함수는 배열이나 리스트와 같은 컬렉션을 변환하는 데 유용한 함수입니다. 왜냐하면 플랫맵은 배열의 구조를 변경할 수 있고, 맵은 배열의 구조를 유지하면서 값을 변환할 수 있기 때문입니다.

플랫맵 함수는 배열의 구조를 변경할 수 있기 때문에 더 유연하게 사용할 수 있습니다. 반면, 맵 함수는 배열의 구조를 유지하기 때문에 코드의 가독성이 높아집니다.

플랫맵과 맵 함수를 결합하여 사용할 수도 있습니다. 이는 복잡한 변환을 수행하는 데 유용합니다. 그러나 플랫맵과 맵을 결합하여 사용할 때는 각 함수의 동작 방식을 잘 이해하고 있어야 합니다.

플랫맵과 맵 함수를 잘 활용하면 더 나은 코드를 작성할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.

이 글을 통해 플랫맵과 맵의 차이점을 이해하고, 이를 통해 더 나은 코드를 작성하는 방법을 배웠기를 바랍니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2025