从数组中删除元素而不知道其索引
通常,如果我们想从数组中删除一个元素,我们需要知道它的索引,以便我们可以使用 remove(at:)
函数轻松删除它。
但是如果我们不知道索引但我们知道要删除的元素的价值呢?
所以这里是对数组的简单扩展,它允许我们在不知道索引的情况下轻松地从数组中删除元素:
Swift3
extension Array where Element: Equatable {
mutating func remove(_ element: Element) {
_ = index(of: element).flatMap {
self.remove(at: $0)
}
}
}
例如
var array = ["abc", "lmn", "pqr", "stu", "xyz"]
array.remove("lmn")
print("\(array)") //["abc", "pqr", "stu", "xyz"]
array.remove("nonexistent")
print("\(array)") //["abc", "pqr", "stu", "xyz"]
//if provided element value is not present, then it will do nothing!
另外,如果我们错误地做了类似的事情:array.remove(25)
即我们提供了不同数据类型的值,编译器会抛出错误
提示 - cannot convert value to expected argument type