【发布时间】:2019-08-25 04:45:34
【问题描述】:
我得到了一个包含 fromTime 和 endTime 的对象数组。我想对它们进行排序,以便在数组中首先获得 16:00-18:00,最后获得 16:00-21:00。我知道如何根据 endDate 进行过滤,但是我需要将 fromDate 考虑在内,有人可以帮助我朝正确的方向前进吗?
"deliverySlots": [
{
"deliveryFromTime": "17:00",
"deliveryToTime": "19:00",
},
{
"deliveryFromTime": "18:00",
"deliveryToTime": "20:00",
},
{
"deliveryFromTime": "19:00",
"deliveryToTime": "21:00",
},
{
"deliveryFromTime": "16:00",
"deliveryToTime": "21:00",
},
{
"deliveryFromTime": "16:00",
"deliveryToTime": "18:00",
}
]
function compare(a,b) {
var time1 = parseFloat(a.deliveryToTime.replace(':','.').replace(/[^\d.-]/g, ''));
var time2 = parseFloat(b.deliveryToTime.replace(':','.').replace(/[^\d.-]/g, ''));
if (time1 < time2) return -1;
if (time1 > time2) return 1;
return 0;
}
deliverySlots.sort(compare);
目标:
"deliverySlots": [
{
"deliveryFromTime": "16:00",
"deliveryToTime": "18:00",
},
{
"deliveryFromTime": "17:00",
"deliveryToTime": "19:00",
},
{
"deliveryFromTime": "18:00",
"deliveryToTime": "20:00",
},
{
"deliveryFromTime": "19:00",
"deliveryToTime": "21:00",
},
{
"deliveryFromTime": "16:00",
"deliveryToTime": "21:00",
},
]
所以基本上我想优先排序 endDate 和 startDate。 16:00-21:00应该在19:00-21:00之后来
【问题讨论】:
-
为什么16-21最后而不是,例如19-21?不清楚应该是什么逻辑,能不能说的更准确点?
-
为什么
16:00-21:00是最后一个?请添加排序结果。 -
所以基本上我想优先排序 endDate & 然后 startDate。 16:00 - 21:00 应该在 19:00-21:00 之后我已经更新了我的第一篇文章
标签: javascript arrays node.js sorting