從陣列中刪除元素而不知道其索引
通常,如果我們想從陣列中刪除一個元素,我們需要知道它的索引,以便我們可以使用 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