Фильтровать массив по дате в виде раздела в табличном представлении - PullRequest
0 голосов
/ 07 мая 2018

У меня есть такой 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"
     }]
 ]

Может кто-нибудь поставить меня на правильный путь?

Заранее спасибо

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать Dictionary(grouping:by:) для этого, как:

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

Словарь (группировка: по:)

Создает новый словарь, ключами которого являются группировки, возвращаемые данным замыканием, а значениями которых являются массивы элементов, возвращавших каждый ключ.

Массивы в позиции "значений" нового словаря содержат по крайней мере один элемент, элементы которого находятся в том же порядке, что и исходная последовательность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...