Arrays 按数组值分组数组

Arrays 按数组值分组数组,arrays,swift,Arrays,Swift,我有很多数组,我想按数组值对数组进行分组。如何使脚本函数为该数组分组 我有如下数组 ["TODAY","TODAY","MONDAY","MONDAY","TUESDAY","TUESDAY","SUNDAY"] ["Angela","Hane","Amel","JOHN","Joseph","Dickinson","RICK"] ["DEV","PRO","ADMIN","PRO","ADMIN","DEV","PRO"] 我想将组变成一个新阵列 [TODAY,MONDAY,TUESDAY,

我有很多数组,我想按数组值对数组进行分组。如何使脚本函数为该数组分组

我有如下数组

["TODAY","TODAY","MONDAY","MONDAY","TUESDAY","TUESDAY","SUNDAY"]
["Angela","Hane","Amel","JOHN","Joseph","Dickinson","RICK"]
["DEV","PRO","ADMIN","PRO","ADMIN","DEV","PRO"]
我想将组变成一个新阵列

[TODAY,MONDAY,TUESDAY,SUNDAY]
//depends by days
[
    [//today
        [Angela,Hane]
        [DEV,PRO]

    ],

    [//monday
        [Amel,JOHN]
        [ADMIN,PRO]
    ],

    [//tuesday
        [Joseph,Dickinson]
        [ADMIN,DEV]
    ]
    [//sunday
        [RICK]
        [PRO]
    ]
]
迅捷的

我需要使用标头在表视图中显示此数组分组。。请帮助我创建一个脚本来生成这个

谢谢你的帮助


我很感激。重构你的设计。与其使用多个数组,不如使用结构

struct Person {
    let name, weekday, type : String
}

let items = [Person(name: "Angela", weekday: "TODAY", type: "DEV"),
             Person(name: "Hane", weekday: "TODAY", type: "PRO"),
             Person(name: "Amel", weekday: "MONDAY", type: "ADMIN"),
             Person(name: "JOHN", weekday: "MONDAY", type: "PRO"),
             Person(name: "Joseph", weekday: "TUESDAY", type: "ADMIN"),
             Person(name: "Dickinson", weekday: "TUESDAY", type: "DEV"),
             Person(name: "RICK", weekday: "SUNDAY", type: "PRO")]
然后你就可以很容易地把它们分组了

let groupedItems = Dictionary(grouping: items, by: {$0.weekday})
要显示项目,请获取键(您可以添加逻辑以对其进行排序)

并通过键获取相应的值

let section = keys[indexPath.section]
let people = groupedItems[section]!
let row = people[indexPath.row]

下面是如何使用3个独立的
数组解决当前代码的问题

let days = ["TODAY","TODAY","MONDAY","MONDAY","TUESDAY","TUESDAY","SUNDAY"]
let arr1 = ["Angela","Hane","Amel","JOHN","Joseph","Dickinson","RICK"]
let arr2 = ["DEV","PRO","ADMIN","PRO","ADMIN","DEV","PRO"]

let arr = Array(zip(days, zip(arr1, arr2))) 
首先,您可以使用
zip(::)
从所有3个
数组中获得一个组合的
数组

let days = ["TODAY","TODAY","MONDAY","MONDAY","TUESDAY","TUESDAY","SUNDAY"]
let arr1 = ["Angela","Hane","Amel","JOHN","Joseph","Dickinson","RICK"]
let arr2 = ["DEV","PRO","ADMIN","PRO","ADMIN","DEV","PRO"]

let arr = Array(zip(days, zip(arr1, arr2))) 
现在,根据
日期对
arr
进行分组,使用

let grouped = Dictionary(grouping: arr, by: {$0.0})
此外,您可以使用
grouped
根据
days
获取数据

let values = grouped[days[indexPath.row]]

注意:与其制作3个独立的
数组,不如创建一个
结构/类
类型,并用它来表示所有数据。

您是如何获得数组中的数据的?您至少应该先尝试解决它。要求完整的解决方案是不礼貌的。谢谢。。我是新来的。。如何使用您提供的字典分组填充cellForRowAt?制作类的
groupedItems
属性,并使用最后一个代码段<代码>行
包含一个人,您可以使用
单元格显示姓名。textLabel?.text=行。姓名
取决于您的示例,先生,如何对字典分组进行排序。。如果我想在工作日展示第一排?无论如何谢谢@vadian显然工作日无法排序。您需要一个逻辑来将名称映射到可排序索引。如果我添加名为“No”(1,2,3,4,5,6,7)的结构。。如何以编程方式对其排序。。已排序({$0.No})。。我如何实现它?
let values = grouped[days[indexPath.row]]