我有一组 Person
的对象:
class Person {
let name:String
let position:Int
}
数组是:
let myArray = [p1,p1,p3]
我想将 myArray
映射为 [position:name]
的字典,经典的解决方案是:
var myDictionary = [Int:String]()
for person in myArray {
myDictionary[person.position] = person.name
}
Swift 是否有任何优雅的方式来使用函数式方法 map
、flatMap
... 或其他现代 Swift 风格来做到这一点
最佳答案
从 Swift 4
开始,您可以使用 reduce
的 into
版本更干净高效地执行@Tj3n 的方法它摆脱了临时字典和返回值,因此阅读起来更快更容易。
示例代码设置:
struct Person {
let name: String
let position: Int
}
let myArray = [Person(name:"h", position: 0), Person(name:"b", position:4), Person(name:"c", position:2)]
Into
参数传递的结果类型为空字典:
let myDict = myArray.reduce(into: [Int: String]()) {
$0[$1.position] = $1.name
}
直接返回传入到
中的类型的字典:
print(myDict) // [2: "c", 0: "h", 4: "b"]
关于ios - 将对象数组映射到 Swift 中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454952/