Swift 遍历自定义结构数组的更好方法
这是我的自定义数据结构:Swift 遍历自定义结构数组的更好方法,swift,Swift,这是我的自定义数据结构: struct Absence { var type: String var date: TimeInterval } 我有一个这样的数据结构数组: var absences: [Absence] 我想要一个函数来返回所有类型的缺勤。我写过这样的话: func types() -> [String] { var types = [String]() for absence in self.absences { if
struct Absence {
var type: String
var date: TimeInterval
}
我有一个这样的数据结构数组:
var absences: [Absence]
我想要一个函数来返回所有类型的缺勤。我写过这样的话:
func types() -> [String] {
var types = [String]()
for absence in self.absences {
if !types.contains(absence.type) {
types.append(absence.type)
}
}
return types
}
我想知道是否有更好的方法使用map、compactMap或flatMap进行迭代。我不熟悉映射数组。非常感谢您的帮助。您只需执行以下操作:
var types = absences.map { $0.type }
如果要筛选类型,请执行以下操作:
var types = absences.map { $0.type }.filter { $0.contains("-") }
或者,如果您只是想删除所有重复项:
var types = Array(Set(absences.map { $0.type }))
从
absences.map{$0.type}
开始。使用Set
消除重复项。Swift 5.2或更高版本您可以使用KeyPathmap(\.type)
@LeoDabus实际上写的是相同的:)请注意,使用这样的集合将放弃数组的原始顺序。如果您想保留元素的原始顺序,请查看此帖子,谢谢大家的解决方案-非常感谢!