假设我有一个数组,例如:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
后来我想将一个元素推送/追加到所述数组的末尾,得到:
["Steve", "Bill", "Linus", "Bret", "Tim"]
我应该使用什么方法?
那么我想在数组的前面中添加一个元素呢?有不变的时间吗?
答案 0 :(得分:545)
从 Swift 3/4 开始,如下所示。
将新元素添加到数组的末尾。
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)
更多信息可以在"收集类型" " The Swift Programming Language"的一章,从第110页开始。
答案 1 :(得分:17)
如果您愿意,也可以传入变量和/或对象。
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中的“+ =”
答案 2 :(得分:16)
要添加到最后,请使用+=
运算符:
myArray += ["Craig"]
myArray += ["Jony", "Eddy"]
该运算符通常等同于append(contentsOf:)
方法。 (在非常古老的Swift版本中,可以附加单个元素,而不仅仅是相同元素类型的其他集合。)
还有insert(_:at:)
用于插入任何索引。
如果您想在开头插入便利功能,可以使用extension将其添加到Array
课程。
答案 3 :(得分:10)
使用+ =和+运算符:
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"
答案 4 :(得分:4)
如果您希望在数组的开头插入而不丢失第一个位置的项目,这是一个小扩展
extension Array{
mutating func appendAtBeginning(newItem : Element){
let copy = self
self = []
self.append(newItem)
self.appendContentsOf(copy)
}
}
答案 5 :(得分:3)
在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)
答案 6 :(得分:2)
来自The Swift Programming Language的第143页:
您可以通过调用数组的追加方法
将新项添加到数组的末尾或者,使用加法赋值运算符(+ =)
将新项添加到数组的末尾
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
答案 7 :(得分:2)
要添加到solutions suggesting append
,在许多情况下知道这是摊销的常量时间操作很有用:
复杂性:分摊O(1),除非自己的存储与另一个实时阵列共享; O(计数)如果自己没有包裹桥接的NSArray;否则效率未指定。
我正在为Swift寻找一个cons
类似的运算符。它应该返回一个 new 不可变数组,并且在不改变原始数组的情况下,在恒定时间内将元素固定在最后。我还没有找到这样做的标准功能。如果我找到一个,我会记得回去报告!
答案 8 :(得分:1)
您可以使用
Myarray.insert("Data #\(index)", atIndex: index)
答案 9 :(得分:1)
如果要追加唯一对象,可以展开数组结构
extension Array where Element: Equatable {
mutating func appendUniqueObject(object: Generator.Element) {
if contains(object) == false {
append(object)
}
}
}
答案 10 :(得分:1)
如果数组是NSArray,则可以使用adding
函数在数组的末尾添加任何对象,如下所示:
Swift 4.2
var myArray: NSArray = []
let firstElement: String = "First element"
let secondElement: String = "Second element"
// Process to add the elements to the array
myArray.adding(firstElement)
myArray.adding(secondElement)
结果:
print(myArray)
// ["First element", "Second element"]
问候,这是一种非常简单的方法!
答案 11 :(得分:1)
在Swift 4.2中: 您可以使用
myArray.append("Tim") //To add "Tim" into array
或
myArray.insert("Tim", at: 0) //Change 0 with specific location
答案 12 :(得分:1)
Deque
相对于 Array
的主要优点是它支持在两端进行高效的插入和删除。
https://swift.org/blog/swift-collections/
var names:Deque = ["Steve", "Bill", "Linus", "Bret"]
names.append("Tim")
names.prepend("John")
names.popFirst() // "John"
names.popLast() // "Tim"
答案 13 :(得分:0)
例如:学生= [“ Ben”,“ Ivy”,“ Jordell”]
1)要将单个元素添加到数组的末尾,请使用append(_:)
students.append(\ "Maxime" )
2)通过将另一个数组或任何类型的序列传递给append(contentsOf :)方法来同时添加多个元素
students.append(contentsOf: ["Shakia" , "William"])
3)通过对单个元素使用insert(_:at :)方法在数组中间添加新元素
students.insert("Liam" , at:2 )
4)使用insert(contentsOf:at :)从另一个集合或数组文字中插入多个元素
students.insert(['Tim','TIM' at: 2 )
答案 14 :(得分:0)
Swift 5.3,我相信。
普通数组是var myArray = ["Steve", "Bill", "Linus", "Bret"]
并且你想将 "Tim"
添加到数组中,那么你可以使用 myArray.insert("Tim", at=*index*)
所以如果你想将它添加到数组的back,那么你可以使用 {{ 1}}