创建最后一项的Javascript排序数组
我想使用以下条件对数组进行排序 我的json对象:创建最后一项的Javascript排序数组,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我想使用以下条件对数组进行排序 我的json对象: [ { "id": 1, "status": true, "time": "2018-03-05T10:24:15.000Z", "complaintId": 1 }, { "id": 2, "status": true, "time": null, "complaintId": 1 }, { "id": 3, "status": true,
[
{
"id": 1,
"status": true,
"time": "2018-03-05T10:24:15.000Z",
"complaintId": 1
},
{
"id": 2,
"status": true,
"time": null,
"complaintId": 1
},
{
"id": 3,
"status": true,
"time": "2018-03-05T10:53:14.000Z",
"complaintId": 2
},
{
"id": 6,
"status": false,
"time": "2018-03-05T11:58:45.000Z",
"complaintId": 1
},
{
"id": 7,
"status": true,
"time": "2018-03-05T12:11:53.000Z",
"complaintId": 1
},
{
"id": 8,
"status": false,
"time": "2018-03-05T13:23:13.000Z",
"complaintId": 2
},
{
"id": 9,
"status": true,
"time": "2018-03-05T08:17:18.000Z",
"complaintId": 3
},
{
"id": 10,
"status": true,
"time": "2018-03-05T12:32:08.000Z",
"complaintId": 2
}
]
我对我的工作提出了抱怨
我需要使用位于最后一个位置的complaintId获取times的json对象,例如,对象中有许多complaintId:1
我只需要得到最后抱怨过的东西
我的预期产出:
[
{
"id": 7,
"status": true,
"time": "2018-03-05T12:11:53.000Z",
"complaintId": 1
},
{
"id": 9,
"status": true,
"time": "2018-03-05T08:17:18.000Z",
"complaintId": 3
},
{
"id": 10,
"status": true,
"time": "2018-03-05T12:32:08.000Z",
"complaintId": 2
}
]
您可以使用array#reduce
并针对每种类型的complaintId
检查它是否没有time
值,然后更新它或对象是否有time值,然后更新与该complaintId
对应的值
var data=[{“id”:1,“status”:true,“time”:“2018-03-05T10:24:15.000Z”,“complaintId”:1},{“id”:2,“status”:true,“time”:null,“complaintId”:1},{“id”:3,“status”:true,“time”:“2018-03-05T10:53:14.000Z”,“complaintId”:2},{“id”:6,“status”:false,“time”:“2018-03-05T11:58:45.000Z”,“complaintId”:1},{“status”:true,“time”:“2018-03-05T12:11:53.000Z”,“complaintId”:1},{“id”:8,“status”:false,“time”:“2018-03-05T13:23:13.000Z”,“complaintId”:2},{“id”:9,“status”:true,“time”:“2018-03-05T08:17:18.000Z”,“complaintId”:3},{“id”:10,“status”:true,“time”:“2018-03-05T12:32:08.000Z”,“complaintId”:2},
结果=对象值(数据减少((r,o)=>{
如果(!r[o.complaintId]| |!r[o.complaintId].time | | o.time)
r[o.complaintId]={…o};
返回r;
},{}))
.sort((a,b)=>a.id-b.id);
控制台日志(结果)代码>可能重复的