簡體   English   中英

JavaScript按日期排序

[英]Javascript Sort by Date

我有一個JavaScritpt日期排序問題。 我有多達24個日期的數組,需要按降序排序。 日期以完整日期格式格式化。 我成功轉換為mm / dd / yyyy。 我意識到我無法使用排序,並且我相信我需要進行排序比較。

我的日期顯示如下

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

我確實引用了按日期排序Javascript對象數組 抱歉,我不完全理解它的工作原理,因為我繼續收到一條錯誤消息,指出我沒有傳遞參數。 不確定如何將a和b傳遞給此函數。

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

預先感謝您的幫助。 艾莉森

如果日期是字符串:

dates = ["10/12/2014", "12/12/2015", "12/31/2015", "14/08/2015"]

dates.sort(function(a, b) {
    var parseDate = function parseDate(dateAsString) {
            var dateParts = dateAsString.split("/");
            return new Date(parseInt(dateParts[2], 10), parseInt(dateParts[1], 10) - 1, parseInt(dateParts[0], 10));
        };

    return parseDate(b) - parseDate(a);
});

[“ 12/31/2015”,“ 12/12/2015”,“ 14/08/2015”,“ 10/12/2014”]

或在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) ]

您可以將其用作自定義比較器函數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM