Filter array by indices

前端 未结 3 1277
闹比i
闹比i 2020-12-06 07:38

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 = [\"su         


        
3条回答
  •  悲哀的现实
    2020-12-06 08:42

    IndexSet is a collection of increasing integers, therefore 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"]
    

    This assumes that all indices are valid for the given array. If that is not guaranteed then you can filter the indices (as @dfri correctly remarked):

    let result = indexSet.filteredIndexSet { $0 < array.count }.map { array[$0] }
    

提交回复
热议问题