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

如何用Swift提取键值对并统计年龄≥50的条目数量

Swift实现:统计年龄≥50的条目数量

需求:读取包含data键的JSON对象,data对应的值是一个由key=STRING, age=INTEGER格式条目组成的字符串,统计其中年龄≥50的条目数量并输出结果。

以下是完整实现代码:

import Foundation

struct DataObject: Decodable {
    let data: String
}

let jsonString = """
{"data":"key=IAfpK, age=58, key=WNVdi, age=64, key=jp9zt, age=47, key=0Sr4C, age=68, key=CGEqo, age=76, key=IxKVQ, age=79, key=eD221, age=29, key=XZbHV, age=32, key=k1SN5, key=zGtmR, age=66, key=nlIN9, age=8, key=hKalB, age=50, key=Na33O, age=17, key=jMeXm, age=15, key=OO2Mc, age=32, key=hhowx, age=34, key=gLMJf, age=60, key=PblX6, age=66, key=0iJGV, age=50, key=cFCfU, age=5, key=J8an1, age=48, key=dkSlj, age=5"}
"""

do {
    let jsonData = jsonString.data(using: .utf8)!
    let dataObject = try JSONDecoder().decode(DataObject.self, from: jsonData)
    
    // 按逗号分割成单个键值对,清理空格与空项
    let keyValuePairs = dataObject.data.components(separatedBy: ",")
        .map { $0.trimmingCharacters(in: .whitespaces) }
        .filter { !$0.isEmpty }
    
    var ageCount = 0
    
    // 遍历键值对,提取年龄并统计符合条件的条目
    for pair in keyValuePairs {
        let components = pair.components(separatedBy: "=")
        guard components.count == 2 else { continue }
        let key = components[0].trimmingCharacters(in: .whitespaces)
        let value = components[1].trimmingCharacters(in: .whitespaces)
        
        if key == "age", let age = Int(value), age >= 50 {
            ageCount += 1
        }
    }
    
    print("年龄≥50的条目数量:\(ageCount)")
} catch {
    print("JSON解析错误:\(error.localizedDescription)")
}

关键步骤说明:

  • 将data字符串按逗号分割为单个键值对,去除前后空格并过滤空字符串,避免无效数据干扰。
  • 遍历所有键值对,筛选出age对应的数值,转换为整数后判断是否≥50,符合条件则计数递增。
  • 替换原代码的强制解析try!为do-catch错误处理,避免解析失败导致程序崩溃。

内容的提问来源于stack exchange,提问作者Gbenga B Ayannuga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:33:35