Swift[map]返回包含特定属性值的数组

Swift[map]返回包含特定属性值的数组,swift,flatmap,Swift,Flatmap,假设我有一个对象数组 let persons = [Person] struct Person { let name: String let position: Int } 我想返回字符串数组[String],其中包含位置等于1的人名。 如果有任何方法可以使用map/flatmap/reduce函数实现这一点?以下是方法: let names = persons .filter { $0.position == 1 } .map { $0.name } 要

假设我有一个对象数组

let persons = [Person]

struct Person { 
    let name: String
    let position: Int
}
我想返回字符串数组[String],其中包含位置等于1的人名。 如果有任何方法可以使用map/flatmap/reduce函数实现这一点?

以下是方法:

let names = persons
    .filter { $0.position == 1 }
    .map { $0.name }
要避免两个步骤,请使用compactMap


非常感谢。这正是我需要的好方法!当代码变得越来越复杂时,可读性就会降低。当发布这样的问题时,你应该包括你自己解决问题的尝试,而不是像对待免费代码编写服务一样对待stackoverlow。
let positionOneNames = persons.compactMap{$0.position == 1 ? $0.name : nil }