【发布时间】:2021-01-20 13:13:42
【问题描述】:
我有两个数组:
let a = ["apple","banana","orange","pomelo","kiwi","melon"]
let b = [1, 2, 4]
a 包含所有项目,b 包含我感兴趣的项目的索引。
所以我想创建一个函数来提取数组b中指定的索引处的项目。
我可以用 for 循环来做:
for i in 0...a.count-1{
if i == b[i]{
print(a[i])
}
}
为了清楚起见,所需的输出是:
香蕉橙猕猴桃
问题在于,如果数字很大,for 循环会太慢。
我想知道是否存在复杂度较低的东西。
【问题讨论】:
-
反过来,只迭代索引,避免 if 测试:
for anIndex in b { print(a[index]) } -
@Larme 这真的很聪明,谢谢!
-
和
if i == b[i]表示if b.contains(i),这将在 b 上迭代每个?如果你想“提取”所说的值(不仅仅是打印),在高级方法中:let extracted = b.map { a[$0] }