如何使用嵌套数据中的字符串分组然后排序

时间:2019-05-07 22:06:03

标签: javascript vue.js lodash

我试图先进行分组,然后使用嵌套属性进行排序以重新创建数组。到目前为止,我可以对它进行分组,但是排序对我不起作用。
以下是我正在使用的数据示例。

`

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时间正确排序。
什么是达到此结果的好方法?

谢谢!

0 个答案:

没有答案