Created
December 7, 2018 01:49
-
-
Save madordie/632f06f29832b8fa6eb131a8388e9e24 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public extension Array { | |
/// 通过item删除一个元素 <https://dbgrandi.github.io/removing_items_from_a_swift_array> | |
/// | |
/// - Parameter equalItem: 遵守 Equatable 协议的item | |
/// - Returns: 是否删除 | |
@discardableResult | |
mutating func remove<Element: Equatable>(equalItem: Element) -> Bool { | |
var isRemoved = false | |
for i in stride(from: self.count-1, through: 0, by: -1) { | |
if let element = self[i] as? Element { | |
if element == equalItem { | |
self.remove(at: i) | |
isRemoved = true | |
} | |
} | |
} | |
return isRemoved | |
} | |
/// 自定义删除规则 | |
/// | |
/// - Parameter predicate: 删除规则 | |
/// - Returns: 是否删除 | |
@discardableResult | |
mutating func removes(where predicate: (Array.Iterator.Element) -> Bool) -> Bool { | |
var isRemoved = false | |
for i in stride(from: self.count-1, through: 0, by: -1) { | |
let element = self[i] | |
if predicate(element) { | |
remove(at: i) | |
isRemoved = true | |
} | |
} | |
return isRemoved | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment