初始阵列
var array = [
{
"name": "Service-1",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 10
},
{
"name": "Service-2",
"status": "Cancelled",
"startDate": "2020-04-03T00:00:00",
"id": 9
},
{
"name": "DG_3029_Export1",
"status": "Approved",
"startDate": "2020-03-01T00:00:00",
"id": 11
},
{
"name": "DG_3029_Export2",
"status": "Approved",
"startDate": "2020-04-02T00:00:00",
"id": 12
},
{
"name": "Service-10",
"status": "Cancelled",
"startDate": "2020-04-10T00:00:00",
"id": 19
}
];预期结果:
var array = [
{
"name": "DG_3029_Export2",
"status": "Approved",
"startDate": "2020-04-02T00:00:00",
"id": 12
},
{
"name": "DG_3029_Export1",
"status": "Approved",
"startDate": "2020-03-01T00:00:00",
"id": 11
},
{
"name": "Service-10",
"status": "Cancelled",
"startDate": "2020-04-10T00:00:00",
"id": 19
},
{
"name": "Service-2",
"status": "Cancelled",
"startDate": "2020-04-03T00:00:00",
"id": 9
},
{
"name": "Service-1",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 10
}
];按日期降序排序(这是我到目前为止能够实现的)。
var array = [
{
"name": "Service-10",
"status": "Cancelled",
"startDate": "2020-04-10T00:00:00",
"id": 19
},
{
"name": "Service-2",
"status": "Cancelled",
"startDate": "2020-04-03T00:00:00",
"id": 9
},
{
"name": "Service-1",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 10
},
{
"name": "DG_3029_Export2",
"status": "Approved",
"startDate": "2020-04-02T00:00:00",
"id": 12
},
{
"name": "DG_3029_Export1",
"status": "Approved",
"startDate": "2020-03-01T00:00:00",
"id": 11
}
];小提琴:https://jsfiddle.net/fierce_trailblazer/gs9ek0oz/
我的目标是按日期排序,然后在开始时用status=“批准”显示所有对象。
是否可以使用javascript按日期和附加参数排序?
var array = [{
"name": "Service-1",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 10
},
{
"name": "DG_3029_Export1",
"status": "Approved",
"startDate": "2020-03-01T00:00:00",
"id": 11
},
{
"name": "DG_3029_Export2",
"status": "Approved",
"startDate": "2020-04-02T00:00:00",
"id": 12
},
{
"name": "Service-10",
"status": "Cancelled",
"startDate": "2020-04-10T00:00:00",
"id": 19
},
{
"name": "DG_Export3",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 13
},
{
"name": "Service-5",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 14
},
{
"name": "Service-6",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 15
},
{
"name": "Service-7",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 16
},
{
"name": "DG_Export4",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 17
},
{
"name": "DG_Export5",
"status": "Cancelled",
"startDate": "2020-04-02T00:00:00",
"id": 18
}
];
array.sort((a, b) =>
new Date(b.startDate) - new Date(a.startDate)
)
for (let i = 0; i < array.length; i++) {
console.log("Id:\t" + array[i].id + "\tStatus:\t" + array[i].status + "\tDate:\t" + array[i].startDate.substring(1, 10));
}
发布于 2020-04-17 07:49:58
您需要先按状态排序,然后按日期排序,才能将所有已批准的项目放在最上面。
var array = [{ name: "Service-1", status: "Cancelled", startDate: "2020-04-02T00:00:00", id: 10 }, { name: "Service-2", status: "Cancelled", startDate: "2020-04-03T00:00:00", id: 9 }, { name: "DG_3029_Export1", status: "Approved", startDate: "2020-03-01T00:00:00", id: 11 }, { name: "DG_3029_Export2", status: "Approved", startDate: "2020-04-02T00:00:00", id: 12 }, { name: "Service-10", status: "Cancelled", startDate: "2020-04-10T00:00:00", id: 19 }];
array.sort((a, b) =>
(b.status === "Approved") - (a.status === "Approved") ||
b.startDate.localeCompare(a.startDate)
);
console.log(array);.as-console-wrapper { max-height: 100% !important; top: 0; }
https://stackoverflow.com/questions/61266471
复制相似问题