Tometoyou Tometoyou - 1 month ago 18
Swift Question

Filter array by indices

I have an array of elements. I also have an IndexSet that specifies which indices of the array need to be extracted into a new array. E.g.:

let array = ["sun", "moon", "star", "meteor"]
let indexSet: IndexSet = [2, 3]
// Some magic happens here to get:
let result = ["star", "meteor"]


I'm looking to use the swift
filter
function, but haven't got the answer yet. How can I do this?

Answer

If you need the array elements in the same order as they are specified in indexSet then you can map each index to the corresponding array element:

let array = ["sun", "moon", "star", "meteor"]
let indexSet: IndexSet = [2, 3]

let result = indexSet.map { array[$0] } // Magic happening here!
print(result) // ["star", "meteor"]
Comments