Swift/Tips & Tricks
Swift Language) sort, map, filter, reduce
iosswift
2021. 9. 29. 13:57
sort, sorted
sort: 자신 (array) 를 정렬
sorted: array 를 정렬해서 return (새로운 값에 할당, array 자체는 그대로 유지)
var numArr = [1,3,2,1,5]
let newArr = numArr.sorted()
// newArr: [1,1,2,3,5], numArr: [1,3,2,1,5]
numArr.sort()
// numArr: [1,1,2,3,5]
numArr.sort(by: >)
// decending order.
// numArr: [5,3,2,1,1]
map
array의 각 element 에 대하여 어떤 logic 을 수행,
logic 이 적용된 각 element 를 새로운 array 로 묶어 return ( 순서 유지)
let numArr = [1,3,2,1,5]
// 1. 각 element 에 2 를 곱한 값을 새로운 array 에 저장
// 1.1 가장 기초적인 mapping 형태
let mappedArr = numArr.map { element in
return element * 2
}
// mappedArr : [2,6,4,2,10]
// 1.2 '$' 를 사용하는 경우
let mappedArr2 = numArr.map { $0 * 2 }
// Swift 가 각 element 를 $0 이라는 값에 자동으로 넣어줌. 이 때 return 생략 가능 (한줄 코드)
// mappedArr2 : [2,6,4,2,10]
// 2. 각 element 를 Int type 에서 string type 으로 바꾼 array
// 2.1 input, return type 을 지정해서 mapping 하는 경우
let mappedArr3 = numArr.map { (num: Int) -> String in
return "\(num)"
}
// mappedArr3 : ["1","3","2","1","5"
// 2.2 '$' 를 사용하는 경우
let mappedArr4 = numArr.map { "\($0)" }
// Swift 가 각 element 를 $0 이라는 값에 자동으로 넣어줌. 이 때 return 생략 가능 (한줄 코드)
// mappedArr4 : ["1","3","2","1","5"
filter
array 내에서 어떤 condition 을 만족하는 값들만 새로운 array 로 묶어 return (순서 유지)
let numArr = [1,3,2,1,5,6]
let oddNumbers = numArr.filter { element in
return element % 2 == 1
}
// oddNumbers : [1,3,1,5]
// return 없이, $ 활용
let evenNumbers = numArr.filter {
$0 % 2 == 0
}
//evenNumbers: [2,6]
reduce
array 의 각 element 들을 logic 에 따라 하나의 값으로 합쳐서 return
let numArr.= [1,3,2,1,5,6]
let reduced = numArr.reduce(0) { result, element in
return result + element
}
// reduced: 18
let reduced2 = numArr.reduce(0) { $0 + $1 }
// reduced2: 18