获取特定类型的对象数组到新数组

时间:2017-06-11 07:06:30

标签: arrays swift

我有我的对象:

struct Person {
    var name = ""
    var age = 0
}

我已将一些人添加到阵列中:

let p1 = Person(name: "Tony", age: 10)
let p2 = Person(name: "Lisa", age: 20)
let p3 = Person(name: "Anna", age: 30)
let p4 = Person(name: "Morgan", age: 40)
let p5 = Person(name: "Jane", age: 50)

let persons = [p1, p2, p3, p4, p5]

我希望所有的名字都在一个单独的数组中,但我不想像nameArray.append(p1.name)那样......是否有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

您只需map名称:

let names = persons.map({ $0.name }) // ["Tony", "Lisa", "Anna", "Morgan", "Jane"] 

答案 1 :(得分:0)

使用map功能:

let names = persons.map { $0.name }

这可能看起来很神奇,所以让我们展开一下,看看究竟发生了什么:

let names = persons.map ({
    person in
    return person.name
})

这里发生的是map应用"转换"到阵列中的每个Person。并通过将闭包传递给map函数来指定要执行的转换。在这里你说"当你给我一个人时,我会把你的名字给你回复#34;。看到这里的转变?我们把一个人变成了一个名字! map会自动将其应用于数组中的每个项目,并将转换的所有结果附加到新数组中。