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

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

然后,我想将一个元素推入/追加到数组的末尾,以获得:

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

我应该用什么方法呢?

如果我想在数组的前面添加一个元素呢?是否存在常数时不变?


当前回答

如果想追加唯一对象,可以展开数组结构

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

其他回答

使用+=和+运算符:

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 3 / 4 / 5开始,这样做。

向数组的末尾添加一个新元素。

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)

更多信息可以在“Swift编程语言”的“集合类型”一章中找到,从第110页开始。

例子:students = ["Ben", "Ivy", "Jordell"]

1)添加单个元素到数组的末尾,使用append(_:)

学生。阿彭

2)通过将另一个数组或任何类型的序列传递给append(contentsOf:)方法,同时添加多个元素

学生。追加(内容:["Shakia", "William"])

3)对单个元素使用insert(_:at:)方法在数组中间添加新元素

学生。插入(“Liam”,在:2)

4)使用insert(contentsOf:at:)从另一个集合或数组文字插入多个元素

学生。insert(['Tim',' Tim' at: 2)

使用Deque而不是Array

Deque相对于Array的主要优点是它在两端支持高效的插入和删除。 https://swift.org/blog/swift-collections/


var names:Deque = ["Steve", "Bill", "Linus", "Bret"]


在名字后面加上“Tim”

names.append("Tim")

在名字的开头加上“Tim”

names.prepend("John")

删除names的第一个元素

names.popFirst() // "John"

删除names的最后一个元素

names.popLast() // "Tim"

如果数组是NSArray,你可以使用add函数添加数组末尾的任何对象,如下所示:

斯威夫特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"]

这是一个非常简单的方法,问候!