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

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

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

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

我应该用什么方法呢?

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


当前回答

要在后面加,使用+=运算符:

myArray += ["Craig"]
myArray += ["Jony", "Eddy"]

该操作符通常等价于append(contentsOf:)方法。(在非常老的Swift版本中,可以附加单个元素,而不仅仅是相同元素类型的其他集合。)

还有insert(_:at:)用于在任意下标处插入。

例如,如果您想要一个方便的函数用于开始插入,那么可以将它添加到带有扩展的Array类中。

其他回答

要在后面加,使用+=运算符:

myArray += ["Craig"]
myArray += ["Jony", "Eddy"]

该操作符通常等价于append(contentsOf:)方法。(在非常老的Swift版本中,可以附加单个元素,而不仅仅是相同元素类型的其他集合。)

还有insert(_:at:)用于在任意下标处插入。

例如,如果您想要一个方便的函数用于开始插入,那么可以将它添加到带有扩展的Array类中。

在Swift 4.1和Xcode 9.4.1中

我们基本上可以用两种方式向数组中添加对象

let stringOne = "One"
let strigTwo = "Two"
let stringThree = "Three"
var array:[String] = []//If your array is string type

1型)

//To append elements at the end
array.append(stringOne)
array.append(stringThree)

2型)

//To add elements at specific index
array.insert(strigTwo, at: 1)

如果你想添加两个数组

var array1 = [1,2,3,4,5]
let array2 = [6,7,8,9]

let array3 = array1+array2
print(array3)
array1.append(contentsOf: array2)
print(array1)

摘自《Swift编程语言》第143页:

可以通过调用数组的append方法将新项添加到数组的末尾 或者,使用加法赋值操作符(+=)将一个新项添加到数组的末尾。

摘自:苹果公司《快速编程语言》。“iBooks。https://itun.es/us/jEUH0.l

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

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

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

如果想追加唯一对象,可以展开数组结构

extension Array where Element: Equatable {
    mutating func appendUniqueObject(object: Generator.Element) {
        if contains(object) == false {
            append(object)
        }
    }
}