【发布时间】:2018-03-01 15:12:09
【问题描述】:
我需要根据元素的某些条件过滤数组,但我需要获取通过测试的元素的索引,而不是元素本身。
例如:给定一个Bool 数组,我想将其转换为一个Int 数组,其中仅包含原始数组中true 元素的索引。
我可以这样做:
// INPUT array:
let flags = [true, false, true, false]
// OUTPUT array:
var trueIndices = [Int]()
for (index, value) in flags.enumerated() where value == true {
trueIndices.append(index)
}
...但它根本不是“快速”。
有没有更优雅的方式?类似于filter(),但返回的是索引而不是元素。
【问题讨论】:
-
非常感谢大家。你所有答案中的 “迅速” 太高了
标签: arrays swift functional-programming