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

如何根据指定枚举毛色数组过滤Cat数组(至少匹配一种)

Swift 过滤匹配至少一种目标毛色的猫咪对象

要实现筛选出至少拥有目标毛色数组中任意一种毛色的猫咪,有两种简洁高效的实现方式:

方式一:利用集合交集判断(推荐,效率更高)

将目标毛色数组转为Set,通过判断猫咪毛色集合与目标集合是否存在交集来筛选:

let colorsToMatch = [FurColor.gray, .tabby]
// 转成Set提升查找效率
let targetColorSet = Set(colorsToMatch)
let filteredCats = cats.filter { !Set($0.furColor).isDisjoint(with: targetColorSet) }

isDisjoint(with:)用于判断两个集合是否完全无交集,取反后就表示存在至少一个共同毛色,符合筛选条件。

方式二:嵌套contains遍历判断

直接通过两层contains检查猫咪是否有任意一种毛色在目标数组中:

let colorsToMatch = [FurColor.gray, .tabby]
let filteredCats = cats.filter { $0.furColor.contains { colorsToMatch.contains($0) } }

外层contains遍历猫咪的每一种毛色,内层contains检查该毛色是否在目标数组内,只要有一个匹配就会保留当前猫咪。

注意

如果目标毛色的数量较多,优先选择方式一,因为Set的查找操作是O(1)时间复杂度,比数组的O(n)更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:24:16