有没有一种简便的方法可以遍历一个数组并将值添加到另一个数组?

时间:2020-05-20 00:14:24

标签: swift

在Swift中是否有一种简便的方法来做类似的事情?

var serviceTypes = [String]()
for menu in menus {
    if let serviceType = menu.serviceType {
        serviceTypes += [serviceType]
    }
}

2 个答案:

答案 0 :(得分:1)

在您的情况下,由于仅在serviceType不为空时才添加到另一个数组,因此请使用compactMap(_:)

如果您使用的是Swift 5.2或更高版本,请you can do this with KeyPaths

let serviceTypes = menus.compactMap(\.serviceType)

如果您使用的是5.2之前的Swift版本,则可以使用闭包:

let serviceTypes = menus.compactMap { $0.serviceType }

答案 1 :(得分:1)

flatMap()是你的朋友! (并且有compactMap()var serviceTypes = menus.compactMap {$0.serviceType} 个朋友。)

{{1}}

此处有更多信息:https://www.hackingwithswift.com/articles/205/whats-the-difference-between-map-flatmap-and-compactmap