Swift - 使用 map/reduce/flatmap 将数组字典减少为相同类型的单个数组
Posted
技术标签:
【中文标题】Swift - 使用 map/reduce/flatmap 将数组字典减少为相同类型的单个数组【英文标题】:Swift - Reducing a Dictionary of Arrays to a single array of same type using map/reduce/flatmap 【发布时间】:2021-04-30 10:13:38 【问题描述】:给定这样的输入:
let m = ["one": ["1","2","3"],
"two":["4","5"]
]
如何使用 map/reduce 来生成如下输出:
["1","2","3","4","5"]
我不是很敏捷,正在尝试学习它,但我似乎无法找到一种有效的方法来完成这个简单的操作。我的详细方法是这样的:
var d = [String]()
for (key, value) in m
value.forEach (s) in
d.append(s)
print(d)
我确定这可以是 1 班轮,有人可以帮忙吗?
【问题讨论】:
你会在这里遇到一个大问题:字典没有排序。 ...但如果这对您来说不是问题,您的单行代码将是m.values.flatMap $0
等效:Array(m.values.joined())
谢谢,对我来说顺序并不重要。亚历山大的回答正是我想要做的。
【参考方案1】:
您只需要一个flatMap
:
let result = dict.flatMap _, values in values
【讨论】:
或dict.flatMap $1
@MartinR 我更喜欢dict.flatMap(\.value)
***.com/a/63515834/2303865
Swift 就像 Perl:TIMTOWTDI以上是关于Swift - 使用 map/reduce/flatmap 将数组字典减少为相同类型的单个数组的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?
Swift : 使用多个 swift 文件或仅使用一个 viewController?保持清洁
如何使用 Swift Package Manager `swift build` 命令构建 Swift Package 的优化版本