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

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

其他回答

我相信是Swift 5.3。

普通数组wasvar myArray = ["Steve", "Bill", "Linus", "Bret"] 并且你想将“Tim”添加到数组中,那么你可以使用myArray。insert("Tim", at=*index*),所以如果你想把它添加到数组的后面,那么你可以使用myArray。append(“Tim”,at: 3)

使用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"

在Swift 4.1和Xcode 9.4.1中

我们基本上可以用两种方式向数组中添加对象

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 where Element: Equatable {
    mutating func appendUniqueObject(object: Generator.Element) {
        if contains(object) == false {
            append(object)
        }
    }
}

从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页开始。