Как сгруппировать, а затем отсортировать, используя строку из вложенных данных - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь сначала сгруппировать, а затем отсортировать, используя вложенное свойство для воссоздания массива.До сих пор я могу группировать, но сортировка не работает для меня.
Ниже приведен пример данных, с которыми я работаю.

`

let arr = [
      {
        'id': 6,
        'date': '2019-05-06',
        'time': {
          'id': 1,
          'start': '08:00:00',
          'end': '09:10:00'
        }
      },
      {
        'id': 7,
        'date': '2019-05-06',
        'time': {
          'id': 2,
          'start': '07:00:00',
          'end': '08:30:00'
        }
      },
      {
        'id': 8,
        'date': '2019-05-06',
        'time': {
          'id': 3,
          'start': '02:00:00',
          'end': '03:00:00'
        }
      },
      {
        'id': 9,
        'date': '2019-05-06',
        'time': {
          'id': 5,
          'start': '04:00:00',
          'end': '05:10:00'
        }
      },
      {
        'id': 10,
        'date': '2019-05-07',
        'time': {
          'id': 1,
          'start': '08:00:00',
          'end': '09:10:00'
        }
      },
      {
        'id': 11,
        'date': '2019-05-07',
        'time': {
          'id': 2,
          'start': '07:00:00',
          'end': '08:30:00'
        }
      },
      {
        'id': 12,
        'date': '2019-05-07',
        'time': {
          'id': 3,
          'start': '02:00:00',
          'end': '03:00:00'
        }
      },
      {
        'id': 13,
        'date': '2019-05-07',
        'time': {
          'id': 5,
          'start': '04:00:00',
          'end': '05:10:00'
        }
      }
    ]

`

Я использую lodash для группировки и сортировки.Ниже приведен желаемый результат, который сгруппирован с использованием date, а затем отсортирован с использованием значения start.
Ожидаемый результат: `

let groupedAndSortedArr =
    [
      {
        'id': 8,
        'date': '2019-05-06',
        'time': {
          'id': 3,
          'start': '02:00:00',
          'end': '03:00:00'
        }
      },
      {
        'id': 9,
        'date': '2019-05-06',
        'time': {
          'id': 5,
          'start': '04:00:00',
          'end': '05:10:00'
        }
      },
      {
        'id': 7,
        'date': '2019-05-06',
        'time': {
          'id': 2,
          'start': '07:00:00',
          'end': '08:30:00'
        }
      },
      {
        'id': 6,
        'date': '2019-05-06',
        'time': {
          'id': 1,
          'start': '08:00:00',
          'end': '09:10:00'
        }
      },
      {
        'id': 12,
        'date': '2019-05-07',
        'time': {
          'id': 3,
          'start': '02:00:00',
          'end': '03:00:00'
        }
      },
      {
        'id': 13,
        'date': '2019-05-07',
        'time': {
          'id': 5,
          'start': '04:00:00',
          'end': '05:10:00'
        }
      },
      {
        'id': 11,
        'date': '2019-05-07',
        'time': {
          'id': 2,
          'start': '07:00:00',
          'end': '08:30:00'
        }
      },
      {
        'id': 10,
        'date': '2019-05-07',
        'time': {
          'id': 1,
          'start': '08:00:00',
          'end': '09:10:00'
        }
      }
    ]

`

Я пытался использовать _.mapValues(_.groupBy(arr, 'date'), t => _.sortBy(t, 'start')), какие группы, но неправильно сортирует по start времени.
Что может быть хорошим способом для достижения этого результата?

Спасибо!

...