由多个属性swift组合数组



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) })

最新更新