地图返回的数组顺序

Cod*_*ent 5 swift swift2

这只是突然出现在我的脑海中,“我知道它是如何工作的,但不知道现在应该怎样”。假设我有一个数组:

struct Person {
    var name : String
    var age : Int
}

var people = [Person]()
people.append(Person(name: "John", age: 24))
people.append(Person(name: "Mike", age: 21))
people.append(Person(name: "Emma", age: 23))
Run Code Online (Sandbox Code Playgroud)

我想people用名称和年龄映射到两个不同的数组:

let names = people.map { $0.name }
let ages  = people.map { $0.age }
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是否可以保证结果将按原始数组的顺序进行,即names = ["John", "Mike", "Emma"]ages = [24, 21, 23]

  2. 如果第一个问题的答案是否定的,是否可以保证namesages保持同步?

36 *_*ign 7

是的,这是您的资料来源

“将提供的闭包应用于每个数组元素后,map(_ :)方法将返回一个包含所有新映射值的新数组,其顺序与原始数组中相应值的顺序相同。”