假设我有一个数组,例如:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
后来我想将一个元素推送/附加到所述数组的末尾,以获得:
["Steve", "Bill", "Linus", "Bret", "Tim"]
我应该使用什么方法?
那么我想在数组的 front 中添加一个元素呢?有不变的时间吗?
要添加到solutions suggesting append,在许多情况下知道这是一个 amortised constant time 操作很有用:
复杂性:分摊O(1),除非自己的存储与另一个实时阵列共享; O(计数)如果自己没有包裹桥接的NSArray;否则效率未指定 .
我正在为Swift寻找一个 cons like运算符 . 它应该返回一个新的不可变数组,其元素在常量时间内固定,而不更改原始数组 . 如果我找到一个,我会记得回来报告!
cons
截至 Swift 3 / 4 ,这样做如下 .
将新元素添加到Array的末尾 .
anArray.append("This String")
将不同的Array附加到Array的末尾 .
anArray += ["Moar", "Strings"] anArray.append(contentsOf: ["Moar", "Strings"])
将新元素插入Array中 .
anArray.insert("This String", at: 0)
将不同Array的内容插入Array中 .
anArray.insert(contentsOf: ["Moar", "Strings"], at: 0)
更多信息可在“The Swift Programming Language”的"Collection Types"章节中找到,从第110页开始 .
使用=和运算符:
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"
在Swift 4.1和Xcode 9.4.1中
我们可以基本上以两种方式向Array添加对象
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)
如果您希望在数组的开头插入而不丢失第一个位置的项目,这是一个小扩展
extension Array{ mutating func appendAtBeginning(newItem : Element){ let copy = self self = [] self.append(newItem) self.appendContentsOf(copy) } }
你可以用
Myarray.insert("Data #\(index)", atIndex: index)
如果需要,您还可以传入变量和/或对象 .
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
要添加到最后,请使用 += 运算符:
+=
myArray += ["Craig"] myArray += ["Jony", "Eddy"]
该运算符等同于 append() 方法 .
append()
在任何索引处都插入 insert(:, atIndex:) . (见Array Reference . )
insert(:, atIndex:)
例如,如果您想在开头插入一个便利函数,可以使用extension将其添加到 Array 类中 .
Array
从Swift编程语言的第143页开始:
您可以通过调用数组的append方法将新项添加到数组的末尾 . 或者,使用添加赋值运算符(=)将新项添加到数组的末尾
摘录自:Apple Inc.“The Swift Programming Language . ”iBooks . https://itun.es/us/jEUH0.l
如果要追加唯一对象,可以展开 Array struct
extension Array where Element: Equatable { mutating func appendUniqueObject(object: Generator.Element) { if contains(object) == false { append(object) } } }
10 回答
要添加到solutions suggesting append,在许多情况下知道这是一个 amortised constant time 操作很有用:
我正在为Swift寻找一个
cons
like运算符 . 它应该返回一个新的不可变数组,其元素在常量时间内固定,而不更改原始数组 . 如果我找到一个,我会记得回来报告!截至 Swift 3 / 4 ,这样做如下 .
将新元素添加到Array的末尾 .
将不同的Array附加到Array的末尾 .
将新元素插入Array中 .
将不同Array的内容插入Array中 .
更多信息可在“The Swift Programming Language”的"Collection Types"章节中找到,从第110页开始 .
使用=和运算符:
然后使用:
在Swift 4.1和Xcode 9.4.1中
我们可以基本上以两种方式向Array添加对象
类型1)
类型2)
如果要添加两个数组
如果您希望在数组的开头插入而不丢失第一个位置的项目,这是一个小扩展
你可以用
如果需要,您还可以传入变量和/或对象 .
要将它们添加到前面:
正如其他人已经说过的那样,你不能再使用'='作为xCode 6.1
要添加到最后,请使用
+=
运算符:该运算符等同于
append()
方法 .在任何索引处都插入
insert(:, atIndex:)
. (见Array Reference . )例如,如果您想在开头插入一个便利函数,可以使用extension将其添加到
Array
类中 .从Swift编程语言的第143页开始:
摘录自:Apple Inc.“The Swift Programming Language . ”iBooks . https://itun.es/us/jEUH0.l
如果要追加唯一对象,可以展开 Array struct