在Swift中添加一个元素到数组中

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

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

后来我想推/添加一个元素到数组的末尾,得到:

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

我应该使用什么方法?

那么我想添加一个元素到数组的前面呢? 有没有一个不变的时间?

您有几个选项可以将元素附加到数组中。 在早期的贝塔斯,你可以使用+ =运算符来追加一个单独的元素,但是这不再是这种情况。 但是,您仍然可以使用附加function。

 anArray.append("This String") 

如果您正在寻找将不同数组的更多元素附加到数组中,仍然可以使用+ =运算符或extend方法。

 anArray += ["Moar", "Strings"] anArray.extend(["Moar", "Strings"]) 

要在数组的开头插入单个对象,可以使用insert方法。

 anArray.insert("This String", atIndex: 0) 

要在数组的开头插入不同数组的内容,可以使用拼接方法。

 anArray.insertContentsOf(["So", "Many", "Strings"], at: 0) 

在insert和insertContentsOf的情况下,秒参数可以是接收数组的任何有效索引。

有关更多信息,请参阅第110页开始的“ Swift编程语言 ”的“集合types”一章。


Swift 3开始 ,上面的例子必须写成如下。

将新元素添加到数组的末尾。

 anArray.append("This String") 

将不同的数组附加到数组的末尾。

 anArray += ["Moar", "Strings"] anArray.append(contentsOf: ["Moar", "Strings"]) 

将新元素插入到您的数组中。

 anArray.insert("This String", at: 0) 

将不同数组的内容插入到数组中。

 anArray.insert(contentsOf: ["Moar", "Strings"], at: 0) 

要添加到最后,请使用+=运算符:

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

该运算符等同于append()方法。

还有insert(:, atIndex:)插入任何索引。 (请参阅数组参考 。)

例如,如果您想在开始时插入一个便利函数,您可以将其添加到具有扩展名的Array类。

如果你愿意,你也可以传入一个variables和/或对象。

 var str1:String = "John" var str2:String = "Bob" var myArray = ["Steve", "Bill", "Linus", "Bret"] //add to the end of the array with append myArray.append(str1) myArray.append(str2) 

把它们添加到前面:

 //use 'insert' instead of append myArray.insert(str1, atIndex:0) myArray.insert(str2, atIndex:0) //Swift 3 myArray.insert(str1, at: 0) myArray.insert(str2, at: 0) 

正如其他人已经指出的那样,您不能再使用xCode 6.1中的“+ =”

使用+ =和+运算符:

 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" 

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

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

要添加到解决schemebuild议append ,这是很有用的知道这是一个摊销恒定时间操作在许多情况下:

复杂性:摊销O(1),除非自己的存储与另一个现场arrays共享; O(count)如果self不包装桥接的NSArray; 否则效率是不确定的。

我正在寻找一个像Swift一样的cons运算符。 它应该返回一个新的不可变数组,并在最后定期添加元素,而不用更改原始数组。 我还没有find一个这样的标准function。 我会尽力记得如果我find一个报告!

从Swift编程语言的第143页开始:

您可以通过调用数组的append方法将新项添加到数组的末尾

或者,使用加法赋值运算符(+ =)将新项添加到数组的末尾

摘录自:苹果公司“Swift编程语言”,iBooks。 https://itun.es/us/jEUH0.l

你可以使用

 Myarray.insert("Data #\(index)", atIndex: index) 

如果你想附加独特的对象,你可以展开Array结构

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