Javascript按日期排序

时间:2016-08-14 20:37:11

标签: javascript sorting date

我有一个JavaScritpt日期排序问题。我有一个最多24个日期的数组,我需要按降序排序。日期格式为完整日期格式。我成功转换为mm / dd / yyyy。我意识到我不能使用排序,我相信我需要进行排序比较。

我的日期显示如下

eventDatesArrray = ,11/30/2014,12/31/2018,12/31/2013,10/11/2016,10/12/2015

我确实参考了Sort Javascript Object Array By Date。我道歉,但我不相信我完全理解它是如何工作的,因为我继续收到一条错误消息,指出我没有传递参数。不确定如何将a和b传递给此函数。

var sortedEventDates = eventDatesArrray .sort(function(a, b) {
    return a>b ? -1 : a<b ? 1 : 0;
});

提前感谢您的帮助。 艾里

3 个答案:

答案 0 :(得分:1)

如果日期是字符串:

collectionView?.indexPathsForVisibleItems
  

[“2015年12月31日”,“2015年12月12日”,“2015年8月14日”,“10/12/2014”]

答案 1 :(得分:0)

或者在ES6中:

var eventDatesArrray = ["11/30/2014","12/31/2018","12/31/2013","10/11/2016","10/12/2015"];
var dates = eventDatesArrray.map(elem => new Date(elem)).sort((a,b) => a-b);
console.log(dates); //[ Tue Dec 31 2013 00:00:00 GMT+0100 (Paris, Madrid),
                    //  Sun Nov 30 2014 00:00:00 GMT+0100 (Paris, Madrid),
                    //  Mon Oct 12 2015 00:00:00 GMT+0200 (Paris, Madrid (heure d’été)),
                    //  Tue Oct 11 2016 00:00:00 GMT+0200 (Paris, Madrid (heure d’été)),
                    //  Mon Dec 31 2018 00:00:00 GMT+0100 (Paris, Madrid) ]

答案 2 :(得分:0)

您可以将其用作自定义比较器功能:

function compare (a, b) {
    partsA = a.split("/");
    partsB = b.split("/");
    if (partsA[2] > partsB[2]) {
        return -1;
    } else if (partsA[2] < partsB[2]) {
        return 1;
    } else {
        if (partsA[1] > partsB[1]) {
            return -1;
        } else if (partsA[1] < partsB[1]) {
            return 1;
        } else {
            if (partsA[0] > partsB[0]) {
                return -1;
            } else if (partsA[0] < partsB[0]) {
                return 1;
            } else {
                return 0;
            }
        }
    }
}

然后拨打eventDatesArray.sort(compare);