我有一系列元素。我还有一个IndexSet,它指定需要将数组的哪些索引提取到新数组中。例如:
let array = ["sun", "moon", "star", "meteor"] let indexSet: IndexSet = [2, 3] // Some magic happens here to get: let result = ["star", "meteor"]
我正在寻找使用swift filter函数的方法,但是还没有答案。我怎样才能做到这一点?
filter
IndexSet是递增整数的集合,因此可以 将 每个索引 映射 到相应的数组元素:
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] }