Home > database >  Swift, How to remove a range of elements from an array
Swift, How to remove a range of elements from an array

Time:10-07

I need to remove a range of elements from an array in Swift. Here is the javascript version of exactly what I need to do in Swift: Remove a range of elements from an array

javascript code: 'array.splice(start, deleteCount)'

I have tried to use the ".removeSubrange" instance but Xcode gives the following warning:

"Variable 'array1Adjusted' inferred to have type '()', which may be unexpected"

Here is my simple code:

var array1 = [10,20,30,40,50,60,70,80,90,100]

var array1Adjusted = array1.removeSubrange(5..<9)

And next I need to find the sum of all the elements of array1Adjusted...

var sumArray1Adjusted = array1Adjusted.reduce(0,  )

...but I get the following error:

"Value of tuple type '()' has no member 'reduce'"

CodePudding user response:

array1.removeSubrange(5..<9) does work. It just doesn't create a new array that you can assign to array1Adjusted. Instead, it modifies array1 in place.

var array1 = [10,20,30,40,50,60,70,80,90,100]
array1.removeSubrange(5..<9)
print(array1) // [10, 20, 30, 40, 50, 100]

If you don't want to modify array1, you can do:

let everythingExcept5to9 = array1[...5]   array1[9...]
print(everythingExcept5to9) // [10, 20, 30, 40, 50, 100]

Note that everythingExcept5to9 is an ArraySlice, which is a "view" into the original array you sliced it from. The slice would have the old array's indices, so if you want a proper new array, you should do:

let newArray = Array(array1[...5]   array1[9...])
  • Related