{"09:12p","08:00a","12:00a","04:00"}
在这里输入图像描述试1:
case 'clockInEndTime':
if (a.clockInEndTime.getTime().toString() == b.clockInEndTime.getTime().toString()) {
return (new Date(a.scheduledStartDate || a.date) < new Date(b.scheduledStartDate || b.date)) ? -1 : (new Date(a.scheduledStartDate || a.date) > new Date(b.scheduledStartDate || b.date)) ? 1 : 0;
} else {
return (a.clockInEndTime.getTime().toString() < b.clockInEndTime.getTime().toString()) ? -1 : 1;
}
您可以对Array.sort()
这样做,但是您需要提供一个函数来创建每个时间戳的客观度量。下面我们将其转换为分钟,您也可以将其转换为小时等。
转换为可比较的一天中经过的时间度量后,可以使用.sort()按升序或降序排序。
注意,我们在这里使用[…]进行浅复制。来确保对数组的副本进行排序。
const times = [ '10:00a', '11:00a', '12:00a', '01:00a', '02:00a'];
function timeToMinutes(input) {
if (!input) {
return 0;
}
let [_ ,hour, minute, meridiem ] = input.match(/(d{1,2}):(d{1,2})([ap])?/i);
hour = Number(hour) + (meridiem === 'p' ? 12: 0);
return hour * 60 + Number(minute);
}
const sortedAsc = [...times].sort((a, b) => timeToMinutes(a) - timeToMinutes(b));
const sortedDesc = [...times].sort((a, b) => timeToMinutes(b) - timeToMinutes(a));
console.log('Sorted (ascending):', sortedAsc);
console.log('Sorted (descending):', sortedDesc);