考虑数组[1,2,3,4]
。如何将数组项重新排列到新位置。
例如:
put 3 into position 4 [1,2,4,3]
put 4 in to position 1 [4,1,2,3]
put 2 into position 3 [1,3,2,4]
。
发布于 2016-04-11 15:00:04
Swift 3.0+:
let element = arr.remove(at: 3)
arr.insert(element, at: 2)
并且在函数形式中:
func rearrange<T>(array: Array<T>, fromIndex: Int, toIndex: Int) -> Array<T>{
var arr = array
let element = arr.remove(at: fromIndex)
arr.insert(element, at: toIndex)
return arr
}
Swift 2.0:
这会将3置于位置4。
let element = arr.removeAtIndex(3)
arr.insert(element, atIndex: 2)
您甚至可以创建一个通用函数:
func rearrange<T>(array: Array<T>, fromIndex: Int, toIndex: Int) -> Array<T>{
var arr = array
let element = arr.removeAtIndex(fromIndex)
arr.insert(element, atIndex: toIndex)
return arr
}
这里需要var
arr
,因为您不能在不将输入参数指定为in-out
的情况下更改它。然而,在我们的例子中,我们得到了一个没有副作用的纯函数,在我看来,这更容易推理。然后你可以这样叫它:
let arr = [1,2,3,4]
rearrange(arr, fromIndex: 2, toIndex: 0) //[3,1,2,4]
发布于 2017-04-07 16:54:11
狮子座的小贴士不错。
对于Swift 3:
extension Array {
mutating func rearrange(from: Int, to: Int) {
insert(remove(at: from), at: to)
}
}
var myArray = [1,2,3,4]
myArray.rearrange(from: 1, to: 2)
print(myArray)
发布于 2018-02-18 10:43:21
var arr = ["one", "two", "three", "four", "five"]
// Swap elements at index: 2 and 3
print(arr)
arr.swapAt(2, 3)
print(arr)
https://stackoverflow.com/questions/36541764
复制相似问题