반응형
- 배열에서 index로 데이터 안전하게 사용하기
// 배열에서 index로 데이터 안전하게 사용하기
extension Array {
subscript(safe index: Int) -> Element? {
return indices ~= index ? self[index] : nil
}
}
// How to use
let items = [0. 1, 2, 3, 4]
let index = 4
if let value = items[safe: index] {
print("value : \(value)")
} else {
print("no value")
}
- 배열 크기별로 분할하기
extension Array {
func chunked(size: Int) -> [[Element]] {
stride(from: 0, to: count, by: size).map { Array(self[$0 ..< Swift.min($0 + size, count)]) }
}
}
// How to use
let items = [0, 1, 2, 3, 4]
let values = items.chunked(size: 2)
// values = [[0, 1], [2, 3], [4]]
- 배열 중복확인하기
extension Array where Element: Hashable {
// 중복된 항목
func duplicates() -> [Element] {
var addedDict = [Element: Bool]()
return filter({ addedDict.updateValue(true, forKey: $0) != nil })
}
// 중복 되지 않은 항목
func noDuplicates() -> [Element] {
var addedDict = [Element: Bool]()
return filter({ addedDict.updateValue(true, forKey: $0) == nil })
}
// 중복된 항목 존재여부
func isDuplicates() -> Bool {
Dictionary(grouping: self, by: {$0}).filter { $1.count > 1 }.keys.count > 0
}
}
// How to use
let items = [0, 1, 2, 3, 4, 0, 2, 5]
print(items.duplicates()) // [0, 2]
print(items.noDuplicates()) // [0, 1, 2, 3, 4, 5]
print(items.isDuplicates()) // true
반응형
'Swift > Tip' 카테고리의 다른 글
What’s new in Swift 5.8 (0) | 2023.06.14 |
---|---|
What’s new in Swift 5.9 (0) | 2023.06.12 |
What’s new in Swift 5.7 (0) | 2022.08.08 |
Type의 문자열 이름 사용하기 (0) | 2022.04.01 |
What’s new in Swift 5.6 (0) | 2022.03.21 |
Swift version과 Xcode version (0) | 2022.02.09 |
What’s new in Swift 5.5 (0) | 2022.01.25 |
What’s new in Swift 5.4 (0) | 2021.04.15 |