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

Swift如何在嵌套数组(数组的数组)中查找指定元素的首个索引

错误原因分析

你的代码无法得到正确结果的核心原因有两个:

  • 你定义的arr是二维嵌套数组,first(where:)遍历到的$0是外层数组的子元素,也就是[("aa",1),("b",2)]这类子数组,不是子数组内部的元组,直接调用$0.1语法本身不成立
  • 你要匹配的字符串dd是元组的第一个元素,对应元组下标为.0,你写的.1取的是元组第二个位置的数值,匹配逻辑本身也不对

实现方案

根据你需要的索引维度,有两种常用实现方式:

场景1:仅需要获取dd所在外层子数组的索引

直接用firstIndex(where:)结合子数组的contains判断即可:

let outerIndex = arr.firstIndex { subArr in
    subArr.contains { $0.0 == "dd" }
}
// 输出可选值1,也就是dd在第二个外层子数组中(索引从0开始计数)

场景2:需要同时获取外层索引、内层元组在子数组中的索引

遍历外层数组的同时遍历子数组,找到匹配项后立即终止遍历即可:

var targetPosition: (outer: Int, inner: Int)?
for (outerIdx, subArr) in arr.enumerated() {
    guard let innerIdx = subArr.firstIndex(where: { $0.0 == "dd" }) else {
        continue
    }
    targetPosition = (outerIdx, innerIdx)
    break
}

// 取值示例
if let pos = targetPosition {
    print("外层索引:\(pos.outer),内层索引:\(pos.inner)")
    // 输出 外层索引:1,内层索引:1
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:54:03