Разделите объект "темы" с начальной и конечной датой в формате дня в javascript. - PullRequest
0 голосов
/ 27 мая 2018

Модуль имеет определенные темы, которые имеют даты начала и окончания.Эти темы должны быть разбиты на день, то есть все темы будут объединены в один и тот же день.Тема может быть завершена за один день, за несколько дней или несколько тем могут быть рассмотрены в один день.Ниже приведен пример данных.Какой будет лучший алгоритм для отображения того, что будут рассмотрены все темы в течение дня.

Для примера json, вывод должен быть:

    [  
       {  
       "day":"Day 1",
       "topics":[  
       "Module 1 Topic 1"
       ]
       },
       {  
       "day":"Day 2",
       "topics":[  
       "Module 1 Topic 2"
       ]
       },
       {  
       "day":"Day 3",
       "topics":[  
       "Module 2 Topic 1"
       ]
       },
       {  
       "day":"Day 4",
       "topics":[  
       "Module 2 Topic 1",
       "Module 2 Topic 2"
       ]
       },
       {  
       "day":"Day 5",
       "topics":[  
       "Module 2 Topic 2",
       "Module 2 Topic 3"
       ]
       },
       {  
       "day":"Day 6",
       "topics":[  
       "Module 3 Topic 1",
       "Module 4 Topic 1",
       "Module 5 Topic 1"
       ]
       },
       {  
       "day":"Day 7",
       "topics":[  
       "Module 6 Topic 1"
       ]
       }
    ]

Пример снимка MongoDB:

    "MODULES_ASSOCIATED" : [ 
        {
            "NAME" : "Module 1",
            "_id" : "5a28e7ea84b3cd7904f70437",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 1 Topic 1",
                    "_id" : "5a28e7e184b3cd7904f6f811",
                    "END_DATE" : ISODate("2018-05-25T14:35:00.000Z"),
                    "START_DATE" : ISODate("2018-05-25T14:35:00.000Z")
                }, 
                {
                    "NAME" : "Module 1 Topic 2",
                    "_id" : "5a28e7e284b3cd7904f6fb32",
                    "END_DATE" : ISODate("2018-05-28T14:35:00.000Z"),
                    "START_DATE" : ISODate("2018-05-28T14:35:00.000Z")
                }
            ]
        }, 
        {
            "NAME" : "Module 2",
            "_id" : "5a28e7eb84b3cd7904f7048f",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 2 Topic 1",
                    "_id" : "5a28e7e184b3cd7904f6f817",
                    "END_DATE" : ISODate("2018-05-30T14:35:00.000Z"),
                    "START_DATE" : ISODate("2018-05-29T14:35:00.000Z")
                }, 
                {
                    "NAME" : "Module 2 Topic 2",
                    "_id" : "5a28e7e284b3cd7904f6fb76",
                    "END_DATE" : ISODate("2018-05-31T14:36:00.000Z"),
                    "START_DATE" : ISODate("2018-05-30T14:36:00.000Z")
                }, 
                {
                    "NAME" : "Module 2 Topic 3",
                    "_id" : "5a28e7e284b3cd7904f6fb12",
                    "END_DATE" : ISODate("2018-05-31T14:37:00.000Z"),
                    "START_DATE" : ISODate("2018-05-31T14:37:00.000Z")
                }
            ]
        }, 
        {
            "NAME" : "Module 3",
            "_id" : "5a28e7eb84b3cd7904f70490",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 3 Topic 1",
                    "_id" : "5a28e7e284b3cd7904f6fbb7",
                    "END_DATE" : ISODate("2018-06-01T14:39:00.000Z"),
                    "START_DATE" : ISODate("2018-06-01T14:38:00.000Z")
                }
            ]
        }, 
        {
            "NAME" : "Module 4",
            "_id" : "5a28e7eb84b3cd7904f70488",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 4 Topic 1",
                    "_id" : "5a28e7e284b3cd7904f6fbb8",
                    "END_DATE" : ISODate("2018-06-01T14:40:00.000Z"),
                    "START_DATE" : ISODate("2018-06-01T14:40:00.000Z")
                }
            ]
        }, 
        {
            "NAME" : "Module 5",
            "_id" : "5a28e7eb84b3cd7904f70480",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 5 Topic 1",
                    "_id" : "5a28e7e284b3cd7904f6fba3",
                    "END_DATE" : ISODate("2018-06-01T14:40:00.000Z"),
                    "START_DATE" : ISODate("2018-06-01T14:40:00.000Z")
                }
            ]
        }, 
        {
            "NAME" : "Module 6",
            "_id" : "5a28e7eb84b3cd7904f70493",
            "TOPICS_ASSOCIATED" : [ 
                {
                    "NAME" : "Module 6 Topic 1",
                    "_id" : "5a28e7e284b3cd7904f6fb45",
                    "END_DATE" : ISODate("2018-06-04T14:40:00.000Z"),
                    "START_DATE" : ISODate("2018-06-04T14:40:00.000Z")
                }
            ]
        }
    ]
...