Допустим, у меня есть следующие данные:
const collection = [
{
callId: "1",
deadline: null
},
{
callId: "1",
deadline: null
},
{
callId: "3",
deadline: "2020-04-02T13:37:00.000Z" //assume its a JS date object
},
{
callId: "3",
deadline: "2020-04-06T08:33:00.000Z" //assume its a JS date object
},
{
callId: "2",
deadline: null
},
{
callId: "2",
deadline: "2020-04-06T08:33:00.000Z" //assume its a JS date object
},
]
Я бы хотел сгруппировать их по callId
, но сгруппированные данные отсортированы по deadline
. Итак, я хочу получить результат:
const sorted = {
"3": [
{
callId: "3",
deadline: "2020-04-02T13:37:00.000Z"
},
{
callId: "3",
deadline: "2020-04-06T08:33:00.000Z"
},
],
"2": [
{
callId: "2",
deadline: "2020-04-06T08:33:00.000Z"
},
{
callId: "2",
deadline: null
},
],
"1": [
{
callId: "1",
deadline: null
},
{
callId: "1",
deadline: null
},
],
}
Я пытался использовать lodash
:
const groupedData = _groupBy(collection, 'callId')
const sortedData = _sortBy(groupedData, [function (resultItem) {
return _map(resultItem, function (value) {
return value.deadline == null;
});
}]);
Но мне не удалось получить правильный результат:
[
[
{
"callId": "3",
"deadline": "2020-04-02T13:37:00.000Z"
},
{
"callId": "3",
"deadline": "2020-04-06T08:33:00.000Z"
}
],
[
{
"callId": "2",
"deadline": null
},
{
"callId": "2",
"deadline": "2020-04-06T08:33:00.000Z"
}
],
[
{
"callId": "1",
"deadline": null
},
{
"callId": "1",
"deadline": null
}
]
]