在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) } } }