You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift:如何用单行代码提取集合嵌套子元素生成去重字符串Set

问题原因

原有写法存在两个问题:

  • 使用map遍历classes会保留和原数组等长的嵌套结构,无法把所有Field的type合并为一维集合
  • reduce的初始值为空数组时,$0 + $1.value.type会触发Swift的隐式类型推断,将String识别为[Character]序列做拼接,最终得到嵌套的字符数组

正确单行实现

要得到去重的String类型Set,写法如下:

let result = Set(classes.flatMap { $0.field.values.map(\.type) })

如果需要转为数组格式,外层套一层Array()即可:

let resultArray = Array(Set(classes.flatMap { $0.field.values.map(\.type) }))

逻辑说明

  • flatMap遍历所有Class实例,将每个实例field字典中的所有Field值拍平到一维数组
  • map(\.type)批量取出所有Field的type属性值
  • 用Set初始化自动完成去重,得到最终结果

内容的提问来源于stack exchange,提问作者Dannis Case

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:45:02