flatMap()은 배열의 각 요소에 대해 함수를 적용한 후, 결과 배열을 평탄화(flatten)하는 메서드이다. 즉, 배열 내의 각 요소를 변형하거나 확장시켜 새로운 배열을 만들고, 그 결과를 하나의 배열로 합치는 역할을 한다.
const arr = [1, 2, 3];
const result = arr.flatMap(x => [x, x * 2]);
console.log(result); // [1, 2, 2, 4, 3, 6]
변환 후 평탄화: map()과 유사하지만, flatMap()은 변환 후 결과 배열을 평탄화한다.
단일 레벨 평탄화: 1단계까지만 평탄화가 이루어지며, 2단계 이상의 중첩은 해결하지 않는다. 즉, 배열 내에 중첩된 배열을 한 단계만 풀어내는 것이다.
ex. 1차원 배열 → 1차원 배열 , 2차원 배열 → 1차원 배열 , 3차원 배열 → 2차원 배열
배열 내 배열 확장: 배열의 요소를 여러 개로 확장할 수 있다.
flatMap() vs map()map()은 배열의 각 요소를 변환하여 새로운 배열을 반환하지만, 변환 결과가 배열이라면 중첩 배열을 그대로 반환한다.flatMap()은 변환 결과를 평탄화하여 중첩 배열을 1단계까지만 풀어낸다.// map() 사용 예
const arr1 = [1, 2, 3];
const result1 = arr1.map(x => [x, x * 2]);
console.log(result1); // [[1, 2], [2, 4], [3, 6]]
// flatMap() 사용 예
const arr2 = [1, 2, 3];
const result2 = arr2.flatMap(x => [x, x * 2]);
console.log(result2); // [1, 2, 2, 4, 3, 6]