我有我的对象:
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)
那样......是否有其他方法可以做到这一点?
答案 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
会自动将其应用于数组中的每个项目,并将转换的所有结果附加到新数组中。