开发者社区> 问答> 正文

在Swift中将对象数组映射到Dictionary

我有个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 } 有雨燕任何优雅的方式做到这一点与功能的办法map,flatMap......或其他现代风格的雨燕 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 21:58:46 564 0
1 条回答
写回答
取消 提交回答
  • 好的map不是一个很好的例子,因为它和循环一样,您可以使用reduce它,将每个对象组合起来并变成单个值:

    let myDictionary = myArray.reduce(Int: String) { (dict, person) -> [Int: String] in var dict = dict dict[person.position] = person.name return dict }

    //[2: "b", 3: "c", 1: "a"] 在Swift 4或更高版本中,请使用以下答案以获得更清晰的语法。

    2020-02-08 21:58:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OpenStack Swift 海量小文件优化之路 立即下载
From Java/Android to Swift iOS 立即下载
Swift在Airbnb的应用实践 立即下载