Swift:如何使用单线减少 Set 中的一些子元素?
Posted
技术标签:
【中文标题】Swift:如何使用单线减少 Set 中的一些子元素?【英文标题】:Swift: how to reduce some sub-elements in a Set with a one-liner? 【发布时间】:2021-11-27 22:58:27 【问题描述】:我有这个模型:
struct Class
var field: [String: Field]
struct Field
var type: String
还有这个数组:
let classes: [Class] = [
Class(field: ["test": Field(type: "STRING"),
"test2": Field(type: "STRING"),
"test3": Field(type: "NUMBER")]),
Class(field: ["test": Field(type: "POINTER"),
"test2": Field(type: "STRING"),
"test3": Field(type: "STRING")]),
]
我想减少一组字符串中的所有types
属性,我试过这个:
let result = classes.map $0.field.reduce([], $0 + $1.value.type )
但不是得到一组字符串:
我想得到什么
“字符串”、“数字”、“指针”
我得到一个字符数组:
[[“S”、“T”、“R”、“I”、“N”、“G”、“N”、“U”、“M”、“B”....]]
我应该写什么呢?谢谢你的帮助
【问题讨论】:
能否请您提供您的示例输入数据和您想要的输出? @jnpdx 谢谢你的回答,我已经编辑了我的问题。 【参考方案1】:您可以使用flatMap
来展平值数组,然后使用Set
去除非唯一值:
let result = Set(classes.flatMap $0.field.values .map $0.type )
如果您需要Array
而不是Set
,您可以简单地将上面的内容包装在Array()
中
【讨论】:
以上是关于Swift:如何使用单线减少 Set 中的一些子元素?的主要内容,如果未能解决你的问题,请参考以下文章