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

Swift如何获取布尔数组中所有值为true的元素的索引

Swift 获取布尔数组中所有true元素索引的解决方案

Swift标准库没有单独的allIndexes(of:)这类直接返回所有匹配索引的专属方法,你可以通过两个内置方法的组合快速实现需求:


方案1:直接用标准库组合调用(无需额外封装)

通过enumerated()遍历拿到每个元素的索引和值,过滤出值为true的项后提取索引即可,一行代码就能完成:

var trueAndFalses = [false, false, true, false, false, false, true, false, false, false]
let allTrueIndexes = trueAndFalses.enumerated()
    .filter { $0.element == true }
    .map(\.offset)

print(allTrueIndexes) // 输出结果:[2, 6]

方案2:扩展Array封装为通用方法(适合高频使用场景)

如果你项目中经常需要查找所有匹配值的索引,可以把逻辑封装成Array的扩展方法,后续直接调用即可:

extension Array where Element: Equatable {
    /// 获取数组中所有等于指定值的元素的索引
    func allIndexes(of target: Element) -> [Int] {
        enumerated().filter { $0.element == target }.map(\.offset)
    }
}

// 调用示例
print(trueAndFalses.allIndexes(of: true)) // 输出:[2, 6]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:45:03