Nic*_*ari 0 arrays functional-programming swift
我需要通过数组元素的某些条件来过滤数组,但我需要获取通过测试的元素的索引,而不是元素本身。
例如:给定一个数组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)
}
Run Code Online (Sandbox Code Playgroud)
......但它根本不是“迅速” 。
有更优雅的方式吗?类似于filter(),但返回索引而不是元素。
您可以直接filter索引
let flags = [true, false, true, false]
let trueIndices = flags.indices.filter{ flags[$0] }
Run Code Online (Sandbox Code Playgroud)
和
let falseIndices = flags.indices.filter{ !flags[$0] }
Run Code Online (Sandbox Code Playgroud)