자주 쓰이는 고차함수
count
배열 내 갯수를 세어준다.
var arr1: [String] = ["존", "펠릭스", "앤서니", "시나", "주니어"]
var arr2: [String] = ["존", "펠릭스", "앤서니", "시나", "주니어"]
print(arr1) // ["존", "펠릭스", "앤서니", "시나", "주니어"]
print(arr2.count) // 5
min() & max()
배열 내 최솟값(최댓값)을 반환함
옵셔널로 반환되니 반드시 if let 또는 guard let.
var numbers = [1,2,3]
print(numbers.min()) // Optional(1)
print(numbers.max()) // Optional(3)
fitstIndex(of:) & lastIndex(of:)
of에 입력된 인덱스가 처음부터(혹은 맨 뒤에서부터) 몇 번째 인덱스에 위치해있는지를 반환함
옵셔널로 반환되니 반드시 if let 또는 guard let.
var arr: [String] = ["일번", "이번", "삼번", "사번", "이번", "육번"]
if let firstIndex = arr.firstIndex(of: "이번") {
print(firstIndex) // 1
}
if let lastIndex = arr.lastIndex(of: "이번") {
print(lastIndex) // 4
}
append
배열에 인덱스를 추가함
var english = "abcde"
var a : [String] = [] // [빈 String 배열]
for i in english{
a.append(String(i))
} // 배열에 ["a", "b", "c", "d", "e", "f", "g" 추가]
a.append("h") // 배열에 ["h" 추가]
print (a) // ["a", "b", "c", "d", "e", "f", "g", "h"]
map
콜렉션 내부의 데이터를 가공하여 새로운 콜렉션을 생성함
let numbers = [1, 2, 3, 4, 5]
let numbersPlusOne = numbers.map({$0 + 1}) // [2, 3, 4, 5, 6]
map 메서드는 클로저를 인자로 받아 컨테이너 내부에 들어있는 요소의 값을 어떻게 바꿀 것인지 결정함
filter
콜렉션 내부에서 조건에 맞는 데이터들만 골라 새로운 콜렉션을 생성함
let numbers = [1, 2, 3, 4, 5]
let numbersBiggerThanTwo = numbers.filter({$0 > 2}) // [3, 4, 5]
filter 메서드는 클로저를 인자로 받아 클로저 내부에는 어떤 데이터를 포함시킬지에 대한 조건을 정의함
reduce
콜렉션 내 데이터들을 하나로 통합함
let numbers = [1, 2, 3, 4, 5]
let numberSum = numbers.reduce(0, { $0 + $1 }) // 15
let numberSumShortcut = numbers.reduce(0, +) // 15
통합할 데이터의 초기 값 인자 한 개, 어떻게 값을 통합할 것인지에 대한 정의가 내려지는 클로저 인자 한 개.
총 두 개의 클로저 필요.
reverse() & reversed()
var arr1: [Int] = [5, 4, 3, 2, 1]
var arr2: [Int] = [5, 4, 3, 2, 1]
arr1.reverse() // [1, 2, 3, 4, 5]
arr2.reversed() // [1, 2, 3, 4, 5]
print(arr1) // [1, 2, 3, 4, 5]
print(arr2)// [5, 4, 3, 2, 1]
reverse()의 경우 원본 arr1 자체가 바뀐다.
reversed()의 경우 해당 줄에서만 바뀌고 원본에는 영향을 미치지 않는다.
sort() & sorted()
var arr1: [Int] = [5, 2, 3, 4, 1]
var arr2: [Int] = [5, 2, 3, 4, 1]
arr1.sort() // [1, 2, 3, 4, 5]
arr2.sorted() // [1, 2, 3, 4, 5]
print(arr1) // [1, 2, 3, 4, 5]
print(arr2) // [5, 2, 3, 4, 1]
sort()의 경우 원본 arr1 자체가 바뀐다.
sorted()의 경우 해당 줄에서만 바뀌고 원본에는 영향을 미치지 않는다.
joined()
join()은 없다.
var arr1: [String] = ["갑", "을", "병", "정", "무"]
var arr2: [String] = ["갑", "을", "병", "정", "무"]
print(arr1) // ["갑", "을", "병", "정", "무"]
print(arr2.joined()) // 갑을병정무
forEach
for문과 비슷하게 사용할 수 있으며 콜렉션의 각 요소를 뽑아낼 수 있다.
let numbers = [1, 2, 3, 4, 5]
numbers.forEach({
print($0)
})
//1
//2
//3
//4
//5
이제부턴 무지성 for문을 돌리지 않아도 된다.
'iOS > TIL (Today I Learned)' 카테고리의 다른 글
[240313] 스파르타 코딩 클럽 12일차 '숫자 야구 게임 lv.5~6 + 7' | TIL (1) | 2024.03.13 |
---|---|
[230312] 스파르타 코딩 클럽 11일차 '숫자 야구 게임 lv.1~lv.4' | TIL (0) | 2024.03.12 |
[230308] 스파르타 코딩 클럽 9일차 'Timer' | TIL (0) | 2024.03.08 |
[240307] 스파르타 코딩 클럽 8일차 'Git & Github' | TIL (2) | 2024.03.07 |
[240306] 스파르타 코딩 클럽 7일차 'textField' | TIL (4) | 2024.03.06 |