Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension Collection {
- func groupBy<GroupingType: Hashable>(key: (Element) -> (GroupingType)) -> [[Element]] {
- var groups: [GroupingType: [Element]] = [:]
- var groupsOrder: [GroupingType] = []
- forEach { element in
- let key = key(element)
- if case nil = groups[key]?.append(element) {
- groups[key] = [element]
- groupsOrder.append(key)
- }
- }
- return groupsOrder.map { groups[$0] ?? [] }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement