假设我有一个数组,例如:

var myArray = ["Steve", "Bill", "Linus", "Bret"]

然后,我想将一个元素推入/追加到数组的末尾,以获得:

["Steve", "Bill", "Linus", "Bret", "Tim"]

我应该用什么方法呢?

如果我想在数组的前面添加一个元素呢?是否存在常数时不变?


当前回答

这是一个小扩展,如果你希望插入在数组的开始,而不失去在第一个位置的项目

extension Array{
    mutating func appendAtBeginning(newItem : Element){
        let copy = self
        self = []
        self.append(newItem)
        self.appendContentsOf(copy)
    }
}

其他回答

这是一个小扩展,如果你希望插入在数组的开始,而不失去在第一个位置的项目

extension Array{
    mutating func appendAtBeginning(newItem : Element){
        let copy = self
        self = []
        self.append(newItem)
        self.appendContentsOf(copy)
    }
}

使用+=和+运算符:

extension Array {

}

func += <V> (inout left: [V], right: V) {
    left.append(right)
}

func + <V>(left: Array<V>, right: V) -> Array<V>
{
    var map = Array<V>()
    for (v) in left {
        map.append(v)
    }

    map.append(right)

    return map
}

然后使用:

var list = [AnyObject]()
list += "hello" 
list += ["hello", "world!"]
var list2 = list + "anything"

要添加到建议append的解决方案中,知道这在许多情况下是一个平摊常数时间操作是有用的:

复杂度:平摊O(1),除非self的存储与另一个活动数组共享;如果self没有封装一个桥接NSArray,则计数为O;否则效率不确定。

我在为斯威夫特找一个像接线员那样的罪犯。它应该在常数时间内返回一个新的不可变数组,元素被钉在最后,而不改变原始数组。我还没有找到这样的标准函数。如果我找到了,我会记得告诉你的!

例子:students = ["Ben", "Ivy", "Jordell"]

1)添加单个元素到数组的末尾,使用append(_:)

学生。阿彭

2)通过将另一个数组或任何类型的序列传递给append(contentsOf:)方法,同时添加多个元素

学生。追加(内容:["Shakia", "William"])

3)对单个元素使用insert(_:at:)方法在数组中间添加新元素

学生。插入(“Liam”,在:2)

4)使用insert(contentsOf:at:)从另一个集合或数组文字插入多个元素

学生。insert(['Tim',' Tim' at: 2)

在Swift 4.2中: 你可以使用

myArray.append("Tim") //To add "Tim" into array

or

myArray.insert("Tim", at: 0) //Change 0 with specific location