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
相关产品推荐
相关产品推荐

