Swift提供了一种基于单个属性将数组转换为字典的方法。是否可以基于多个属性将数组分组到字典中。类似于跟踪
例如,我们有一组包含姓名、年龄和性别的对象
Person{
let name: String
let age: Int
let gender: String
}
我们有包含人员的阵列
let array:[Person] = [Person(name: "Alex", age: 25, gender: "Male"), Person(name: "Sara", age: 25, gender: "Female")]
如何按姓名和年龄等多个属性进行分组?
Dictionary(grouping: array, by: { $0.name && $0.age })
您可以通过任何可以成为键的东西进行分组,换句话说,通过任何Hashable
进行分组。
如果您需要组合多个属性,请定义一个新类型:
struct GroupingKey: Hashable {
let name: String
let age: Int
}
Dictionary(grouping: array, by: { GroupingKey(name: $0.name, age: $0.age) })