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

Swift中如何从Codable解码得到的数组中筛选符合指定条件的元素

实现方法

你已经通过解析得到了GroceryProduct类型的groceryPro实例,其data属性就是存储700个Data1元素的数组,直接使用Swift标准库的filter高阶函数即可完成筛选,具体实现如下:

基础简洁版

直接利用可选值的等式判断逻辑,system_name为nil时会自动返回false,自动排除无system_name的元素:

// 取到所有原始元素数组
let allDataList = groceryPro.data
// 筛选system_name等于"Esc"的所有元素
let filteredList = allDataList.filter { $0.system_name == "Esc" }

严谨安全版

如果需要明确排除system_name为nil的情况,避免隐式可选比较的潜在问题,可以用可选绑定显式处理:

let filteredList = allDataList.filter { item in
    // 先解包system_name,无值则直接排除该元素
    guard let validSystemName = item.system_name else {
        return false
    }
    // 解包成功后再匹配字符串
    return validSystemName == "Esc"
}

筛选结果使用示例

筛选后得到的filteredList就是符合条件的[Data1]类型数组,可以直接遍历使用:

for element in filteredList {
    print("匹配元素id: \(element.id ?? "无"), 名称: \(element.name ?? "无")")
}

内容的提问来源于stack exchange,提问作者Anton Alymov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:04