Skip to content

Instantly share code, notes, and snippets.

@mdmsua
Created June 14, 2017 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mdmsua/368edb8ea363c552fef3630b406104c2 to your computer and use it in GitHub Desktop.
Save mdmsua/368edb8ea363c552fef3630b406104c2 to your computer and use it in GitHub Desktop.
public extension Sequence {
func group<U: Hashable>(by key: (Iterator.Element) -> U?) -> [U:[Iterator.Element]] {
var categories: [U: [Iterator.Element]] = [:]
for element in self {
let key = key(element)
if case nil = categories[key!]?.append(element) {
categories[key!] = [element]
}
}
return categories
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment