在Swift中向数组添加元素

时间:2014-06-02 20:29:51

标签: ios arrays swift

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

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

后来我想将一个元素推送/追加到所述数组的末尾,得到:

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

我应该使用什么方法?

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

15 个答案:

答案 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"]


在名称末尾添加“Tim”

names.append("Tim")

在名字的开头添加'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}}