공식문서
flatMap(_:)
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
이 시퀀스의 각 요소와 함께 지정된 변환을 호출한 결과가 연결된 배열을 반환합니다.
flatMap
을 사용하면 N 차원 배열을 1차원 배열로 합칠 수 있습니다. 공식문서 설명이 어렵긴 한데 쉽게 말하면 각 배열을 지정한 대로 변환하고 그 결과들의 배열을 하나로 합쳐 새로운 배열을 만드는 겁니다. 😅 예제를 보시죠!
let array: [[Int]] = [[1, 2, 3], [4, 5, 6]]
print(array.flatMap{ $0 })
// 출력 : [1, 2, 3, 4, 5, 6]
let array: [[[Int]]] = [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
print(array.flatMap{ $0 }.flatMap { $0 })
// 출력 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
let array: [[Int]] = [[1, 2, 3], [4, 5, 6]]
print(array.flatMap{ $0 + [0] })
// 출력 : [1, 2, 3, 0, 4, 5, 6, 0]
이렇게 중괄호 안에 변환 방식을 지정하면 새로운 결과를 만들 수 있습니다.
let array: [[Int]] = [[1, 2, 3], [4, 5, 6]]
print(array.flatMap{ $0 })
print(Array(array.joined()))
print(array.reduce([], +))
// 출력 : [1, 2, 3, 4, 5, 6]
joined()
와 reduce()
를 활용해도 같은 결과를 만들 수 있습니다.