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

Swift中如何搜索嵌套数组的String属性并保留父结构?

解决方案

要实现保留包含目标Car的Dealer,且每个Dealer仅显示符合条件的Car,需要分两步处理:先筛选出有匹配Car的Dealer,再对每个Dealer的Car数组做过滤。

修改后的代码示例

let searchQuery = "Car 23_0"

let searchResult = result.dealers
    // 第一步:只保留包含至少一辆匹配Car的Dealer
    .filter { dealer in
        dealer.cars.contains { $0.name.contains(searchQuery) }
    }
    // 第二步:对每个Dealer,仅保留符合搜索条件的Car
    .map { dealer in
        var filteredDealer = dealer
        filteredDealer.cars = dealer.cars.filter { $0.name.contains(searchQuery) }
        return filteredDealer
    }

代码说明

  • 第一步过滤Dealer:使用filter结合contains判断,只留下旗下有至少一辆Car的名称包含搜索字符串的Dealer,完全没有匹配Car的Dealer会被排除。
  • 第二步过滤Car数组:通过map创建每个Dealer的副本,将副本的cars数组替换为仅包含符合搜索条件的Car,最终每个Dealer下只会显示匹配的Car条目。

可选优化:忽略大小写的模糊搜索

如果需要支持不区分大小写的搜索,可以把contains替换为localizedCaseInsensitiveContains,适配多语言场景:

// 替换两处contains判断为:
$0.name.localizedCaseInsensitiveContains(searchQuery)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:05:41