首页 > 解决方案 > 在表格视图中按日期过滤数组

问题描述

我有一个这样的json

"myAlert": [{

    "usa_time": "2018-04-27 10:42:45",
    "vs_title": "Kenya ",
    "vs_start_time": "2018-04-29 18:00:00",
    "vs_end_time": "2018-04-29 18:50:00",
    "vs_status": "1",
    "vs_add_time": "2018-04-29 00:00:00"
}, {

    "usa_time": "2018-04-27 10:42:37",
    "vs_title": "Association",
    "vs_start_time": "2018-04-29 14:45:00",
    "vs_end_time": "2018-04-29 15:30:00",
    "vs_status": "1",
    "vs_add_time": "2018-04-29 00:00:00"
}, {
    "usa_time": "2018-04-27 10:42:27",
    "vs_title": "Negotiations ",
    "vs_start_time": "2018-04-28 19:00:00",
    "vs_end_time": "2018-04-28 19:45:00",
    "vs_status": "1",
    "vs_add_time": "2018-04-28 00:00:00"
}, {
    "usa_time": "2018-04-27 10:42:27",
    "vs_title": "Negotiations ",
    "vs_start_time": "2018-04-28 19:00:00",
    "vs_end_time": "2018-04-28 19:45:00",
    "vs_status": "1",
    "vs_add_time": "2018-04-28 00:00:00"
}]

我想将此数据过滤到vs_add_time. 如果数据具有相似vs_add_time的日期,则日期变为部分,并且具有相同日期的数据作为字典组合成日期数组。

我想将数据过滤成这种格式:

"myAlert": [
     '2018-04-29': [{
         "usa_time": "2018-04-27 10:42:45",
         "vs_title": "Kenya ",
         "vs_start_time": "2018-04-29 18:00:00",
         "vs_end_time": "2018-04-29 18:50:00",
         "vs_status": "1",
         "vs_add_time": "2018-04-29 00:00:00"
     }, {
         "usa_time": "2018-04-27 10:42:41",
         "vs_title": "Kiyoshi El ",
         "vs_start_time": "2018-04-29 16:00:00",
         "vs_end_time": "2018-04-29 17:30:00",
         "vs_status": "1",
         "vs_add_time": "2018-04-29 00:00:00"
     }, ],
     '2018-04-28': [{
         "usa_time": "2018-04-27 10:42:27",
         "vs_title": "Negotiations ",
         "vs_start_time": "2018-04-28 19:00:00",
         "vs_end_time": "2018-04-28 19:45:00",
         "vs_status": "1",
         "vs_add_time": "2018-04-28 00:00:00"
     }, {
         "usa_time": "2018-04-27 10:42:27",
         "vs_title": "Negotiations ",
         "vs_start_time": "2018-04-28 19:00:00",
         "vs_end_time": "2018-04-28 19:45:00",
         "vs_status": "1",
         "vs_add_time": "2018-04-28 00:00:00"
     }]
 ]

谁能让我走上正轨?

先感谢您

标签: arraysswiftdatefilter

解决方案


您可以使用Dictionary(grouping:by:)它,如:

let groupedDict = Dictionary(grouping: myAlert, by: { $0["vs_add_time"]! })

字典(分组:按:)

创建一个新字典,其键是给定闭包返回的分组,其值是返回每个键的元素的数组。

新字典的“values”位置中的数组每个都包含至少一个元素,元素的顺序与源序列相同。


推荐阅读