如何按指定id属性对数组中的对象进行分组(Swift适用)
Swift 按id属性分组对象数组实现
直接使用Swift标准库提供的Dictionary(grouping:by:)初始化方法即可快速实现需求,代码如下:
struct User { var id: Int var name: String } let userArray = [ User(id: 1, name: "A"), User(id: 2, name: "B"), User(id: 1, name: "C"), User(id: 3, name: "D"), User(id: 2, name: "E"), ] // 核心分组逻辑,得到结构为 [Int: [User]] 的字典,key为id,value为对应id的所有User数组 let groupedResult = Dictionary(grouping: userArray) { $0.id } // 按需提取对应id的数组 let newArray1 = groupedResult[1] ?? [] let newArray2 = groupedResult[2] ?? [] let newArray3 = groupedResult[3] ?? [] // 如果需要得到按id升序排列的二维数组,可追加排序逻辑 let sortedGroups = groupedResult.values .sorted { $0.first?.id ?? .min < $1.first?.id ?? .min }
注:该方法会保留元素在原数组中的相对顺序,符合绝大多数场景的使用要求
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

