Swift5中如何在对象数组中匹配两个条件查找索引
Swift中基于双条件查找对象数组索引的实现
1. 基础实现(查找首个匹配索引)
先定义示例数据模型,再利用Swift数组原生的firstIndex(where:)方法,在闭包中同时指定两个判断条件:
// 定义示例对象结构体 struct User { let id: Int let name: String let age: Int } // 构造测试数组 let userList = [ User(id: 1, name: "Alice", age: 25), User(id: 2, name: "Bob", age: 30), User(id: 3, name: "Charlie", age: 25) ] // 查找name为"Bob"且age为30的对象索引 if let targetIndex = userList.firstIndex(where: { $0.name == "Bob" && $0.age == 30 }) { print("匹配到的索引:\(targetIndex)") // 输出:匹配到的索引:1 } else { print("未找到符合条件的对象") }
2. 查找所有匹配索引
如果需要找出数组中所有满足双条件的元素索引,可以结合enumerated()、filter和map实现:
// 查找所有age为25且name不等于"Charlie"的对象索引 let allMatchIndices = userList.enumerated() .filter { $0.element.age == 25 && $0.element.name != "Charlie" } .map { $0.offset } print("所有匹配索引:\(allMatchIndices)") // 输出:所有匹配索引:[0]
关键说明
firstIndex(where:)是Swift标准库提供的高效方法,会遍历数组直到找到第一个满足条件的元素,返回其可选类型的索引,无匹配则返回nil。- 闭包中的条件可以自由组合逻辑运算符(
&&、||等),支持多条件的灵活判断。
内容的提问来源于stack exchange,提问作者It's Arif Naveed
相关产品推荐
相关产品推荐

