map
map은 데이터를 변형하고자 할 때 사용한다.
기존 데이터를 입력으로 넣으면 새로운 컨테이너를 반환한다.
□ 장점
- for-in 구문과 큰 차이가 없지만 코드가 확 줄어든다는 장점이 있다.
- 재사용하기 용이하다
- 컴파일러 최적화 성능이 좋다.
let numArray = [1,3,5,7,9]
//for-in 사용
var multiArray2 = [Int]()
for num in numArray{
multiArray2.append(num * 2)
}
// 원래 클로저 구문
let multiArray1 = numArray.map { (num: Int) -> Int in
return num * 2
}
// 축약시킨 버전
let multiArray = numArray.map { $0 * 2 }
→ for-in을 사용했을 때 보다 map을 사용한 코드가 더 간단하다.
compactMap
Map 응용 버전으로 compact(압축)한 map이다.
Map을 이용하여 새롭게 데이터를 가공했을 때 nil값이 생길 수 있다.
이런 경우 nil 값을 제외한 후 새로운 컨테이너를 만들어준다.
Filter
filter는 데이터를 추출할 때 사용한다.
기존 컨테이너에서 내부의 값을 필터링하여 새로운 컨테이너로 반환한다.
let stringArray = ["A","AB","AC","ABD"]
// for-in 구문
var threeCountarray = [String]()
for st in stringArray{
if st.count == 3{
threeCountarray.append(st)
}
}
// 클로저 사용
let threeCountArray2 = stringArray.filter { st in
st.count == 3
}
// 축약 클로저 사용
let threeCountArray1 = stringArray.filter{ $0.count == 3}
→ filter의 경우도 for-in을 사용할 때보다 더 코드가 간결해진다.
Reduce
데이터를 합치기 위해 사용한다.
기존 컨테이너에서 내부의 값들을 결합하여 새로운 값을 생성한다.
let numberArray = [1,2,3,4,5,6,7,8,9,10]
// for-in 구문
var sum = 0
for num in numberArray{
sum += num
}
// 클로저
let sum1 = numberArray.reduce(0) { first, second in
first + second
}
// 축약 클로저
let sum2 = numberArray.reduce(0) {$0 + $1}
→ 배열을 돌면서 배열에 있는 값들을 모두 합하는 코드들이다.
→ reduce(초기 설정 result 값, 클로저 구문)으로 구성되어 있다
# 참고한 사이트
'iOS > 문법' 카테고리의 다른 글
Swift 문법과 친해지기 - Type Casting 와 Any, AnyObject (0) | 2023.01.04 |
---|---|
Swift 문법과 친해지기 - Subscript (0) | 2022.12.31 |
Swift 문법과 친해지기 - Set (0) | 2022.12.26 |
Swift 문법과 친해지기 - Dictionary (0) | 2022.12.26 |
Swift 문법과 친해지기 - enum (0) | 2022.12.23 |