我有一系列元素。我还有一个IndexSet,它指定需要将数组的哪些索引提取到新数组中。例如。:
let array = ["sun", "moon", "star", "meteor"]
let indexSet: IndexSet = [2, 3]
// Some magic happens here to get:
let result = ["star", "meteor"]
我希望使用Swift的
filter
函数,但尚未找到答案。我怎样才能做到这一点? 最佳答案
IndexSet
是递增整数的集合,因此您可以
将每个索引映射到相应的数组元素:
let array = ["sun", "moon", "star", "meteor"]
let indexSet: IndexSet = [2, 3]
let result = indexSet.map { array[$0] } // Magic happening here!
print(result) // ["star", "meteor"]
假设所有索引对于给定数组均有效。
如果不能保证,则可以过滤索引
(如@dfri正确说明):
let result = indexSet.filteredIndexSet { $0 < array.count }.map { array[$0] }
关于ios - 按索引过滤数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40264624/