按日期和时间升序对数组进行排序

Sort array by date and time in ascending order

本文关键字:数组 排序 升序 日期 时间      更新时间:2024-02-21

我有一个未排序的数组。即

var _dateArray = [
 { startTime : 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' },
 { startTime : 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' },
 { startTime : 'Sat Feb 21 2015 17:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 19:15:00 GMT+0530 (IST)' },
 { startTime : 'Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 21:00:00 GMT+0530 (IST)' },
 { startTime : 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 16:45:00 GMT+0530 (IST)' },
 { startTime : 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 17:15:00 GMT+0530 (IST)' },
];

我想像这种格式的一样对这个数组进行排序

var _dateArray = [
     { startTime : 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 16:45:00 GMT+0530 (IST)' },
     { startTime : 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 17:15:00 GMT+0530 (IST)' },
     { startTime : 'Sat Feb 21 2015 17:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 19:15:00 GMT+0530 (IST)' },
     { startTime : 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' },
     { startTime : 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' },
     { startTime : 'Sat Feb 21 2015 20:00:00 GMT+0530 (IST)' ,endTime : ' Sat Feb 21 2015 21:00:00 GMT+0530 (IST)' },
 ];

你能告诉我如何实现这个功能吗?

谢谢。

您需要使用带有自定义比较器的JavaScript函数.sort(),在该比较器中您将解析开始日期并进行比较。

自定义比较器是一个接收2个项目的函数,并根据您的自定义比较要求返回负值/零值/正值。.sort()函数使用提供的比较器,并在排序过程中使用它来比较元素:

var _dateArray = [{
    startTime: 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)'
}, {
    startTime: 'Sat Feb 21 2015 19:00:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 20:00:00 GMT+0530 (IST)'
}, {
    startTime: 'Sat Feb 21 2015 17:00:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 19:15:00 GMT+0530 (IST)'
}, {
    startTime: 'Sat Feb 21 2015 20:00:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 21:00:00 GMT+0530 (IST)'
}, {
    startTime: 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 16:45:00 GMT+0530 (IST)'
}, {
    startTime: 'Sat Feb 21 2015 16:30:00 GMT+0530 (IST)',
    endTime: ' Sat Feb 21 2015 17:15:00 GMT+0530 (IST)'
}];
//this is our comparator function
function DateComparator(dateAPair, dateBPair) {
    var DateA = new Date(dateAPair.startTime);
    var DateB = new Date(dateBPair.startTime);
    if (DateA < DateB) {
        return -1;
    } else if (DateA > DateB) {
        return 1;
    } else {
        return 0;
    }
}
console.log(_dateArray);
_dateArray.sort(DateComparator);
console.log(_dateArray);