我有一个带有属性日期的对象数组.
我想要的是创建数组数组,其中每个数组将包含具有相同日期的对象.
我明白,我需要类似.filter来过滤对象,然后使用.map将每个东西添加到数组中.
但是如何告诉.map我希望每个组都有来自过滤对象的单独数组,并且必须将此数组添加到“全局”数组以及如何告诉.filter我想要具有相同日期的对象?
改进oriyentel解决方案以允许对任何事物进行有序分组:
原文链接:https://www.f2er.com/swift/320143.htmlextension Sequence { func group<GroupingType: Hashable>(by key: (Iterator.Element) -> GroupingType) -> [[Iterator.Element]] { var groups: [GroupingType: [Iterator.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]! } } }
然后它将适用于任何元组,结构或类以及任何属性:
let a = [(grouping: 10,content: "a"),(grouping: 20,content: "b"),(grouping: 10,content: "c")] print(a.group { $0.grouping }) struct GroupInt { var grouping: Int var content: String } let b = [GroupInt(grouping: 10,GroupInt(grouping: 20,GroupInt(grouping: 10,content: "c")] print(b.group { $0.grouping })