我试图先进行分组,然后使用嵌套属性进行排序以重新创建数组。到目前为止,我可以对它进行分组,但是排序对我不起作用。
以下是我正在使用的数据示例。
`
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
时间正确排序。
什么是达到此结果的好方法?
谢谢!