【发布时间】:2020-04-02 08:37:13
【问题描述】:
假设我有以下数据:
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
}
]
]
【问题讨论】:
-
你想得到
sorted吗?作为对象? -
按最近的日期排序并按 callId 分组
-
您不能通过具有索引的键对对象进行排序。
标签: javascript object lodash