[Swift] N차원 배열을 1차원 배열로 합치는 방법

레일리·2024년 6월 19일
0
post-thumbnail
post-custom-banner

공식문서
flatMap(_:)
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
이 시퀀스의 각 요소와 함께 지정된 변환을 호출한 결과가 연결된 배열을 반환합니다.

flatMap 을 사용하면 N 차원 배열을 1차원 배열로 합칠 수 있습니다. 공식문서 설명이 어렵긴 한데 쉽게 말하면 각 배열을 지정한 대로 변환하고 그 결과들의 배열을 하나로 합쳐 새로운 배열을 만드는 겁니다. 😅 예제를 보시죠!

2차원 -> 1차원

let array: [[Int]] = [[1, 2, 3], [4, 5, 6]]
print(array.flatMap{ $0 })
// 출력 : [1, 2, 3, 4, 5, 6]

3차원 -> 1차원

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]

이렇게 중괄호 안에 변환 방식을 지정하면 새로운 결과를 만들 수 있습니다.

1차원 배열로 합치는 다른방법들

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() 를 활용해도 같은 결과를 만들 수 있습니다.

profile
나야, 개발자
post-custom-banner

0개의 댓글