一尘不染

如何快速复制数组末尾?

swift

从某些索引开始,肯定有一些使用Swift拷贝数组末尾的非常优雅的方法,但是我只是找不到它,所以我以此结束:

func getEndOfArray<T>( arr : [T], fromIndex : Int? = 0) -> [T] {
    var i=0;
    var newArray : [T] = [T]()
    for item in arr {
        if i >= fromIndex {
            newArray.append(item)
        }
        i = i + 1;
    }
    return newArray // returns copy of the array starting from index fromIndex
}

有没有其他功能的更好方法吗?


阅读 211

收藏
2020-07-07

共1个答案

一尘不染

还有一个…

let array = [1, 2, 3, 4, 5]
let fromIndex = 2
let endOfArray = array.dropFirst(fromIndex)
print(endOfArray) // [3, 4, 5]

这给出了ArraySlice对于大多数目的来说应该足够好的。如果您需要一个真实的Array,请使用

let endOfArray = Array(array.dropFirst(fromIndex))

如果起始索引大于(或等于)元素计数,则会创建一个空数组/切片。

2020-07-07