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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:22:02