Swift version: 5.10
If you want to count how many items in an array (or any collection) match a test you specify, the easiest thing to do is run the collection through a call to filter()
then count the remainder.
For example, if you had an array of numbers and wanted to count how many were odd, you would write this:
let count1 = [1, 2, 3, 4, 5].filter { $0 % 2 == 1 }.count
Because this is something that all collections might want to do, you should consider wrapping it in an extension on Collection
, like this:
extension Collection {
func count(where test: (Element) throws -> Bool) rethrows -> Int {
return try self.filter(test).count
}
}
With that change, counting the odd numbers becomes this:
let count2 = [1, 2, 3, 4, 5].count { $0 % 2 == 1 }
SPONSORED Superwall lets you build & test paywalls without shipping updates. Run experiments, offer sales, segment users, update locked features and more at the click of button. Best part? It's FREE for up to 250 conversions / mo and the Superwall team builds out 100% custom paywalls – free of charge.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.