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

标签 javascript arrays datetime

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

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);

关于javascript - 按日期和时间升序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650136/

相关文章:

javascript - 使用 javascript 在 href 中更改 img src

javascript - 你能为 IntelliJ IDEA 推荐免费的 javascript 插件吗?

c++ - 是否有解决数组中无效八进制数字的方法?

r - 将日期时间从 Excel 转换为 R

r - 减去POSIXct时如何以相同单位表示时差

postgresql - 如何在 PostgreSQL 中将 timestamp(0) 设置为默认值而不是 timestamp(6)?

javascript - 嵌入式系统上的单页应用程序

javascript - 当另一个项目添加到数组时从数组中删除项目

c - 读取文本文件,将每一行分成单独的数组并在 C 中排序

java - 类中的基本数组方法 - JAVA