Map
내부의 데이터를 가공하여 새로운 콜렉션을 생성하는 것
지금까지의 경험으로는 주로 배열에 사용되는 것 같다
배열의 모든 요소에 1을 더하는 map 함수 예제
let numbers = [1, 2, 3, 4, 5]
let numbersPlusOne = numbers.map({ $0 + 1 })
print(numbersPlusOne) // [2, 3, 4, 5, 6]
문자열 배열 내 요소의 길이를 구하는 map 함수 예제
let words = ["apple", "banana", "cherry"]
let wordLengths = words.map { $0.count }
print(wordLengths) // [5, 6, 6]
딕셔너리의 값을 변환하는 map 함수 예제
let scores = ["A": 50, "B": 75, "C": 100]
let doubleScores = scores.mapValues { $0 * 2 }
print(doubleScores) // ["A": 100, "B": 150, "C": 200]
문자열 배열을 정수 배열로 변환하는 map 함수 예제
let stringNumbers = ["1", "2", "3", "4", "5"]
let intNumbers = stringNumbers.map { Int($0)! }
print(intNumbers) // [1, 2, 3, 4, 5]
Filter
내부 데이터에서 각 요소에 주어진 조건을 적용하여
조건에 만족하는 요소들만 포함하는 새로운 배열을 반환한다
짝수만 필터링하는 filter 함수 예제
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // [2, 4, 6, 8, 10]
문자열 배열에서 길이 조건을 만족하는 요소를 필터링
let words = ["aa", "bbb", "cccc", "ddddd", "eeeeee"]
let longWords = words.filter { $0.count >= 5 }
print(longWords) // ["ddddd", "eeeeee"]
딕셔너리의 특정 값을 필터링
let scores = ["A": 50, "B": 75, "C": 90, "D": 65]
let passingScores = scores.filter { $0.value >= 70 }
print(passingScores) // ["B": 75, "C": 90]
객체 배열에서 특정 속성을 필터링
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let people = [
Person(name: "A", age: 30),
Person(name: "B", age: 20),
Person(name: "C", age: 25)
]
let adults = people.filter { $0.age >= 21 }
adults.forEach { print($0.name) }
// A
// C
Reduce
배열의 모든 요소를 차례차례 합쳐서 하나의 값으로 만든다
모든 요소를 덧셈
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, { $0 + $1 })
print(sum) // 출력: 15
모든 요소를 곱셈
let numbers = [1, 2, 3, 4, 5]
let product = numbers.reduce(1, { $0 * $1 })
print(product) // 출력: 120
문자열 연결
let words = ["Hello", "World", "Swift"]
let sentence = words.reduce("", { $0 + " " + $1 })
print(sentence) // 출력: "Hello World Swift"
딕셔너리 키값 합산
let items = [
["name": "A", "price": 3],
["name": "B", "price": 2],
["name": "C", "price": 5]
]
let totalPrice = items.reduce(0, { $0 + ($1["price"] ?? 0) })
print(totalPrice) // 출력: 10
조건에 맞는 값의 합산
let numbers = [1, 2, 3, 4, 5, 6]
let evenSum = numbers.reduce(0, { $0 + ($1 % 2 == 0 ? $1 : 0) })
print(evenSum) // 출력: 12
'🍎 Swift > iOS 문법 노트' 카테고리의 다른 글
[🍎 Swift 문법] sort 와 sorted (0) | 2024.07.09 |
---|---|
[🍎 Swift 문법] 제어문 전환 명령어 (0) | 2024.06.27 |
[🍎 Swift 문법] if let & guard let (0) | 2024.06.27 |
[🍎 Swift 문법] 타입 캐스팅 (0) | 2024.06.25 |
[🍎 Swift 문법] 프로퍼티 옵저버 (0) | 2024.06.11 |