首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中将数组的项重新排列到新位置?

如何在Swift中将数组的项重新排列到新位置?
EN

Stack Overflow用户
提问于 2016-04-11 14:54:34
回答 12查看 63.3K关注 0票数 81

考虑数组[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]

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-04-11 15:00:04

Swift 3.0+:

代码语言:javascript
复制
let element = arr.remove(at: 3)
arr.insert(element, at: 2)

并且在函数形式中:

代码语言:javascript
复制
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。

代码语言:javascript
复制
let element = arr.removeAtIndex(3)
arr.insert(element, atIndex: 2)

您甚至可以创建一个通用函数:

代码语言:javascript
复制
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的情况下更改它。然而,在我们的例子中,我们得到了一个没有副作用的纯函数,在我看来,这更容易推理。然后你可以这样叫它:

代码语言:javascript
复制
let arr = [1,2,3,4]
rearrange(arr, fromIndex: 2, toIndex: 0) //[3,1,2,4]
票数 145
EN

Stack Overflow用户

发布于 2017-04-07 16:54:11

狮子座的小贴士不错。

对于Swift 3:

代码语言:javascript
复制
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)
票数 23
EN

Stack Overflow用户

发布于 2018-02-18 10:43:21

代码语言:javascript
复制
var arr = ["one", "two", "three", "four", "five"]

// Swap elements at index: 2 and 3
print(arr)
arr.swapAt(2, 3)
print(arr)
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36541764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档