簡體   English   中英

如何根據日期對對象數組進行排序

[英]How to sort an array of objects based on date

我有一個對象數組,我試圖根據createDate進行排序。

[{
    "TestName": "com.DPProgram",
    "Test": {
        "createDate": "2018-02-15T17:17:10.000+0530",
        "effectiveStartDate": "1900-01-01T00:00:00.000+0530",
        "effectiveEndDate": "2200-01-01T00:00:00.000+0530"
    }
}, {
    "TestName": "com.DPProgram",
    "Test": {
        "createDate": "2018-02-22T15:00:11.000+0530",
        "effectiveStartDate": "2017-12-22T00:00:00.000+0530",
        "effectiveEndDate": "2018-12-23T00:00:00.000+0530"
    }
}];

data = data.sort(function(a, b) {
  data = data.sort(function(a, b) {
    return (a[data.createDate] > b[data.createDate]) 
  });

然而,它沒有排序

https://jsfiddle.net/o2gxgz9r/51545/

您將日期作為字符串進行比較。 在進行比較之前,您需要將它們轉換為Date對象。

此示例a[data.bean.createDate]破壞a[data.bean.createDate]語法。 您需要訪問obj.Test.createDate

最后,不要使用alert()進行調試,尤其是不要使用比字符串更復雜的任何數據類型。 console.log()更准確,因為它不強制數據類型,並允許您遍歷級別或對象/數組。

盡管如此,試試這個:

 var data = [{ "TestName": "com.DPProgram", "Test": { "createDate": "2018-02-15T17:17:10.000+0530", "effectiveStartDate": "1900-01-01T00:00:00.000+0530", "effectiveEndDate": "2200-01-01T00:00:00.000+0530" } }, { "TestName": "com.callidus.quotaDP.Tests.DPProgram", "Test": { "createDate": "2018-02-22T15:00:11.000+0530", "effectiveStartDate": "2017-12-22T00:00:00.000+0530", "effectiveEndDate": "2018-12-23T00:00:00.000+0530" } }, { "TestName": "com.Foo", "Test": { "createDate": "2018-02-07T15:00:11.000+0530", "effectiveStartDate": "2017-12-22T00:00:00.000+0530", "effectiveEndDate": "2018-12-23T00:00:00.000+0530" } }]; data = data.sort(function(a, b) { var aDate = new Date(a.Test.createDate), bDate = new Date(b.Test.createDate); return aDate > bDate ? 1 : aDate < bDate ? -1 : 0; }); console.log(data); 

 var data = [{ "TestName": "com.DPProgram", "Test": { "createDate": "2018-02-15T17:17:10.000+0530", "effectiveStartDate": "1900-01-01T00:00:00.000+0530", "effectiveEndDate": "2200-01-01T00:00:00.000+0530" } }, { "TestName": "com.DPProgram", "Test": { "createDate": "2018-02-22T15:00:11.000+0530", "effectiveStartDate": "2017-12-22T00:00:00.000+0530", "effectiveEndDate": "2018-12-23T00:00:00.000+0530" } },{ "TestName": "com.DPProgram", "Test": { "createDate": "2018-02-25T15:00:11.000+0530", "effectiveStartDate": "2017-12-22T00:00:00.000+0530", "effectiveEndDate": "2018-12-23T00:00:00.000+0530" } }]; console.log(_.sortBy(data, 'createDate')); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js"></script> 

當您使用排序函數時,您將獲得兩個參數,這兩個參數是您正在操作的數據數組的元素,因此您需要使用它們:

data.sort(function(a, b) {
    return a.Test.createDate - b.Test.createDate;
});

暫無
暫無

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

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