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

Swift中如何筛选Active值为true的学生完整详情?

筛选Active值为true的学生详情(Swift实现)

这里有一个简洁且安全的Swift实现方案,帮你筛选出所有Active值为true的学生详情,同时保留原有的学校、code等信息:

第一步:定义初始数据(修正语法后的正确格式)

首先我们先把你提供的details字典调整为符合Swift语法的格式:

let details: [String: Any] = [
    "code": 235,
    "school": "sp school",
    "students": [
        ["name": "1student", "Active": false],
        ["name": "2student", "Active": true],
        ["name": "3student", "Active": true],
        ["name": "4student", "Active": false],
        ["name": "5student", "Active": false]
    ]
]

第二步:实现筛选逻辑

接下来是核心的筛选代码,全程使用安全的类型转换避免崩溃:

// 安全取出students数组,若类型错误或不存在则提前退出
guard var students = details["students"] as? [[String: Any]] else {
    print("学生数据格式无效")
    return
}

// 过滤出Active字段为true的学生
let activeStudents = students.filter { student in
    // 处理字段不存在或非Bool类型的情况,这类学生不会被保留
    student["Active"] as? Bool == true
}

// 构建新的详情字典,保留原有字段并替换为过滤后的学生列表
var filteredDetails = details
filteredDetails["students"] = activeStudents

// 打印最终结果
print(filteredDetails)

最终输出结果

运行上述代码后,你会得到期望的结果:

[
    "code": 235,
    "school": "sp school",
    "students": [
        ["name": "2student", "Active": true],
        ["name": "3student", "Active": true]
    ]
]

关键说明

  • 使用guard语句做安全的类型转换,避免强制解包(!)导致的运行时崩溃;
  • filter方法简洁高效,直接遍历数组筛选符合条件的元素;
  • 复制原字典再更新students字段,确保保留了原有的code、school等所有其他信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:33:51