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

如何无循环快速从Swift结构体数组提取字符串数组?

Swift 结构体数组字段提取的高效实现

我定义了以下嵌套结构体:

struct MainContryModel{
    let id: Int
    let ContryName: String
    let ActList: [MainActModel]
    let freAskedIds: [MainActModel]
}

struct MainActModel{
    let id: Int
    let name: String
    let ActChapteers: [MainListModel]
}

struct MainListModel{
    let id: Int
    let title: String
    let subList: [SubList]
}

struct SubList{
    let title: String
    let description: [String]
}

需要从MainContryModel类型的数组arrList中提取ContryName字段生成字符串数组,原本用循环实现:

// 注:原代码存在笔误,修正后如下
var arrStrList:[String] = []
for model in arrList{
    arrStrList.append(model.ContryName)
}

希望找到无需显式循环、性能更优的实现方式。


最优实现:使用map方法

Swift集合类型内置的map方法是处理这类转换的标准方案,代码简洁且性能经过官方优化,和手动循环效率相当(甚至编译器会做额外优化):

let arrStrList = arrList.map { $0.ContryName }

map会遍历数组中的每个元素,将闭包中的逻辑应用到元素上,最终返回转换后的新数组。它的底层实现本质也是循环,但属于语言层面的优化实现,无需手动管理数组初始化和元素添加,代码可读性更高。

如果是处理超大规模数据集,追求极致性能可以考虑并行处理(比如用DispatchQueue.concurrentPerform),但会增加代码复杂度,普通场景下map完全够用。

内容的提问来源于stack exchange,提问作者Er. Hiren Shiyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:22