我有两个数组:
let a = ["apple","banana","orange","pomelo","kiwi","melon"]
let b = [1, 2, 4]
a
包含所有项目,并b
包含我感兴趣的项目的索引。
因此,我想创建一个函数,以在array中指定的索引处提取项目b
。
我可以使用for循环:
for i in 0...a.count-1{
if i == b[i]{
print(a[i])
}
}
为了清楚起见,所需的输出将是:
香蕉橙猕猴桃
问题在于,使用大数字时,for循环会太慢。
我想知道是否存在更低复杂度的东西。
您可以简单地映射索引并返回关联的元素:
let aa = ["apple","banana","orange","pomelo","kiwi","melon"]
let bb = [1, 2, 4]
let elements = bb.map { aa[$0] }
print(elements) // ["banana", "orange", "kiwi"]
或扩展RandomAccessCollection协议:
extension RandomAccessCollection {
func elements(at indices: [Index]) -> [Element] { indices.map { self[$0] } }
}
let a = ["apple","banana","orange","pomelo","kiwi","melon"]
let b = [1, 2, 4]
let elements = a.elements(at: b) // ["banana", "orange", "kiwi"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句