如何在苹果的新语言Swift中取消设置/删除数组中的元素?
下面是一些代码:
let animals = ["cats", "dogs", "chimps", "moose"]
如何将元素animals[2]从数组中移除?
如何在苹果的新语言Swift中取消设置/删除数组中的元素?
下面是一些代码:
let animals = ["cats", "dogs", "chimps", "moose"]
如何将元素animals[2]从数组中移除?
当前回答
要从数组中删除元素,使用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 }
}
当然,这不仅仅适用于字符串。
扩展删除字符串对象
extension Array {
mutating func delete(element: String) {
self = self.filter() { $0 as! String != element }
}
}
如果你有一个自定义对象数组,你可以像这样通过特定的属性进行搜索:
if let index = doctorsInArea.firstIndex(where: {$0.id == doctor.id}){
doctorsInArea.remove(at: index)
}
或者如果你想通过名字来搜索
if let index = doctorsInArea.firstIndex(where: {$0.name == doctor.name}){
doctorsInArea.remove(at: index)
}
斯威夫特5: 这是一个很酷的和简单的扩展来删除数组中的元素,而不需要过滤:
extension Array where Element: Equatable {
// Remove first collection element that is equal to the given `object`:
mutating func remove(object: Element) {
guard let index = firstIndex(of: object) else {return}
remove(at: index)
}
}
用法:
var myArray = ["cat", "barbecue", "pancake", "frog"]
let objectToRemove = "cat"
myArray.remove(object: objectToRemove) // ["barbecue", "pancake", "frog"]
也适用于其他类型,例如Int,因为Element是泛型类型:
var myArray = [4, 8, 17, 6, 2]
let objectToRemove = 17
myArray.remove(object: objectToRemove) // [4, 8, 6, 2]
要从数组中删除元素,使用remove(at:), removeLast()和removeAll()。
yourArray = [1,2,3,4]
删除2位置的值
yourArray.remove(at: 2)
从数组中移除最后一个值
yourArray.removeLast()
从集合中移除所有成员
yourArray.removeAll()