[英]How to sort array of objects based on descending order of date in reactjs?
[英]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])
});
然而,它沒有排序
您將日期作為字符串進行比較。 在進行比較之前,您需要將它們轉換為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.