从数组中删除元素而不知道其索引

通常,如果我们想从数组中删除一个元素,我们需要知道它的索引,以便我们可以使用 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