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或更高版本您可以使用KeyPath
map(\.type)
@LeoDabus实际上写的是相同的:)请注意,使用这样的集合将放弃数组的原始顺序。如果您想保留元素的原始顺序,请查看此帖子,谢谢大家的解决方案-非常感谢!