如何在苹果的新语言Swift中取消设置/删除数组中的元素?

下面是一些代码:

let animals = ["cats", "dogs", "chimps", "moose"]

如何将元素animals[2]从数组中移除?


当前回答

上面的答案似乎假定您知道要删除的元素的索引。

通常,您知道对数组中要删除的对象的引用。在这种情况下,直接使用对象引用可能会更容易,而不必到处传递它的索引。因此,我建议这个解决方案。它使用标识符!==,用于测试两个对象引用是否都引用同一个对象实例。

func delete(element: String) {
    list = list.filter { $0 != element }
}

当然,这不仅仅适用于字符串。

其他回答

扩展删除字符串对象

extension Array {
    mutating func delete(element: String) {
        self = self.filter() { $0 as! String != element }
    }
}

let关键字用于声明不能更改的常量。如果你想修改一个变量,你应该使用var代替,例如:

var animals = ["cats", "dogs", "chimps", "moose"]

animals.remove(at: 2)  //["cats", "dogs", "moose"]

一个保持原始集合不变的非突变替代方法是使用过滤器创建一个新的集合,而不删除你想要的元素,例如:

let pets = animals.filter { $0 != "chimps" }

如果你不知道你想要删除的元素的索引,并且元素符合Equatable协议,你可以这样做:

animals.remove(at: animals.firstIndex(of: "dogs")!)

参见Equatable协议答案:我如何做indexOfObject或一个适当的containsObject

要从数组中删除元素,使用remove(at:), removeLast()和removeAll()。

yourArray = [1,2,3,4]

删除2位置的值

yourArray.remove(at: 2)

从数组中移除最后一个值

yourArray.removeLast()

从集合中移除所有成员

yourArray.removeAll()

上面的答案似乎假定您知道要删除的元素的索引。

通常,您知道对数组中要删除的对象的引用。在这种情况下,直接使用对象引用可能会更容易,而不必到处传递它的索引。因此,我建议这个解决方案。它使用标识符!==,用于测试两个对象引用是否都引用同一个对象实例。

func delete(element: String) {
    list = list.filter { $0 != element }
}

当然,这不仅仅适用于字符串。