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

Swift数组搜索:统计指定参数值≥2000的元素数量

Swift数组搜索与统计:查找location≥2000的元素并统计数量

没问题,我来帮你搞定Swift数组里的这个搜索和统计需求~ 首先得明确你的数组元素类型,我分两种常见场景来给你示例代码:


场景1:数组元素是自定义类型(比如包含location属性的模型)

假设你有一个自定义的结构体/类,用来存储包含location的数据,比如:

struct Place {
    let location: Int // 这里假设location是整数类型,根据你的实际情况调整为Float/Double都可以
}

接下来有两种实现方式,按需选择:

方式1:直观筛选+统计(同时保留符合条件的元素)

这种方式会先筛选出所有符合条件的元素,再统计数量,优点是能拿到筛选后的数组,方便后续使用:

// 示例数组
let places: [Place] = [
    Place(location: 1500),
    Place(location: 2200),
    Place(location: 3000),
    Place(location: 1800),
    Place(location: 2500)
]

// 筛选location≥2000的元素
let qualifiedPlaces = places.filter { $0.location >= 2000 }
// 统计数量
let qualifiedCount = qualifiedPlaces.count

print("符合条件的元素有 \(qualifiedCount) 个:\(qualifiedPlaces)")

filter方法会遍历数组,只保留满足闭包条件的元素,生成新数组;之后取这个数组的count就是你要的数量。

方式2:高效直接统计(仅需数量时推荐)

如果只需要统计数量,不需要保留筛选后的元素,用reduce更高效——它不会生成新数组,直接累计符合条件的元素个数:

let qualifiedCount = places.reduce(0) { total, place in
    total + (place.location >= 2000 ? 1 : 0)
}

print("符合条件的元素数量:\(qualifiedCount)")

reduce从初始值0开始,每遍历一个元素就判断:如果location≥2000就给总数加1,否则加0,最后得到总数量,内存占用更低。


场景2:数组元素是字典类型

如果你的数组是[[String: Int]](或者其他数值类型的字典),代码只需稍作调整,注意处理字典值的可选性:

// 示例字典数组
let locationDictArray: [[String: Int]] = [
    ["location": 1900],
    ["location": 2100],
    ["location": 2000],
    ["location": 1700]
]

// 方式1:筛选+统计
let qualifiedDicts = locationDictArray.filter { ($0["location"] ?? 0) >= 2000 }
let count = qualifiedDicts.count

// 方式2:直接统计
let countReduce = locationDictArray.reduce(0) { total, dict in
    total + ((dict["location"] ?? 0) >= 2000 ? 1 : 0)
}

这里用?? 0是为了处理字典中不存在location键的情况,避免出现nil报错,你可以根据实际需求调整默认值。

内容的提问来源于stack exchange,提问作者Youo.info

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:50