Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. extension Collection {
  2.  
  3. func groupBy<GroupingType: Hashable>(key: (Element) -> (GroupingType)) -> [[Element]] {
  4. var groups: [GroupingType: [Element]] = [:]
  5. var groupsOrder: [GroupingType] = []
  6.  
  7. forEach { element in
  8. let key = key(element)
  9.  
  10. if case nil = groups[key]?.append(element) {
  11. groups[key] = [element]
  12. groupsOrder.append(key)
  13. }
  14. }
  15.  
  16. return groupsOrder.map { groups[$0] ?? [] }
  17. }
  18.  
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement