如何以给定格式减少 Swift 中的数组?我无法理解逻辑

How can I reduce my array in Swift in the given format? Am not able to get the logic

我有一个结构和一个数组如下

struct MyStruct : Codable {
   var name:String
   var slot:String
   var id: Int
}

struct NewStruct : Codable {
   var name:String
   var slot:[String]
   var id: Int
}

let data1 = MyStruct(name: "Ankit", slot: "1", id: 11)
let data2 = MyStruct(name: "Deric", slot: "1", id: 12)
let data3 = MyStruct(name: "Ankit", slot: "2", id: 11)
let data4 = MyStruct(name: "Deric", slot: "2", id: 12)
let data5 = MyStruct(name: "RandomName1", slot: "1", id: 13)
let data6 = MyStruct(name: "RandomName2", slot: "1", id: 14)
let data7 = MyStruct(name: "Ankit", slot: "3", id: 11)

var arrayOfData = [data,data2,data3,data4,data5,data6,data7]

我希望合并重复的名称或说 id,并且插槽应具有相应名称或 id 的数组,以供参考 我期待结果

[
   NewStruct(name: "Ankit", slot: ["1","2","3"] ,id: 11),
   NewStruct(name: "Deric", slot:["1","2"], id: 12),
   NewStruct (name: "RandomName1", slot: ["1"], id: 13),
   NewStruct(name: "RandomName2", slot: ["1"], id: 14)
]

我需要帮助,请有人帮助我,我是 swift 编程的新手。 我想使用此数据将其填充到 Table 视图内的集合视图中,其中 tableview 向我显示名称,而 table 视图中的集合视图向我显示全部特定名称的插槽,我是在本机反应中完成的,即 javascript 代码,使用 reduce 方法,但无法在此处获取它....

可以使用reduce(into:)合并成字典,然后使用字典的值

let merged = arrayOfData
    .reduce(into: [:]) {
        [=10=][.id, default: NewStruct(name: .name, slot: [], id: .id)].slot.append(.slot)
    }
    .values