jquery - 如何使用 jquery 按日期范围对 json 进行排序?
问题描述
我有一个日期范围 json,而我的 json 未排序,所以我的日期范围不是正确的顺序。我尝试了 2 种解决方案,但没有得到正确的结果。
下面是json:
0: { Status : 1
DateFrom : "2018-09-01 00:00"
DateTo : "2018-09-08 00:00" }
1: { Status : 1
DateFrom : "2018-09-02 00:00"
DateTo : "2018-09-08 00:00" }
2: { Status : 1
DateFrom : "2018-09-08 00:00"
DateTo : "2018-09-15 00:00" }
3: { Status : 1
DateFrom : "2018-10-01 00:00"
DateTo : "2018-10-06 00:00" }
4: { Status : 1
DateFrom : "2018-10-06 00:00"
DateTo : "2018-10-13 00:00" }
5: { Status : 1
DateFrom : "2018-07-01 00:00"
DateTo : "2018-07-07 00:00" }
6: { Status : 1
DateFrom : "2018-07-07 00:00"
DateTo : "2018-07-14 00:00" }
7: { Status : 1
DateFrom : "2018-08-04 00:00"
DateTo : "2018-08-11 00:00" }
我尝试了下面的代码,但没有得到正确的结果。
var res = JSON.parse($("#hdfAvailabe").val());
//This one try
res.sort(function (left, right) {
return moment.utc(left.timeStamp).diff(moment.utc(right.timeStamp))
});
//This second try
res.sort(function (a, b) {
return a - b
})
这是我的例外输出:
0: { Status : 1
DateFrom : "2018-07-01 00:00"
DateTo : "2018-07-07 00:00" }
1: { Status : 1
DateFrom : "2018-07-07 00:00"
DateTo : "2018-07-14 00:00" }
2: { Status : 1
DateFrom : "2018-08-04 00:00"
DateTo : "2018-08-11 00:00" }
3: { Status : 1
DateFrom : "2018-09-01 00:00"
DateTo : "2018-09-08 00:00" }
4: { Status : 1
DateFrom : "2018-09-02 00:00"
DateTo : "2018-09-08 00:00" }
5: { Status : 1
DateFrom : "2018-09-08 00:00"
DateTo : "2018-09-15 00:00" }
6: { Status : 1
DateFrom : "2018-10-01 00:00"
DateTo : "2018-10-06 00:00" }
7: { Status : 1
DateFrom : "2018-10-06 00:00"
DateTo : "2018-10-13 00:00" }
任何人都知道如何做到这一点,请帮助我解决这个问题。
解决方案
sort()
是您需要使用的正确方法,但是您需要在将DateFrom
属性转换为Date
对象后比较它们的值,如下所示:
res.sort(function(a, b) {
var aDate = new Date(a.DateFrom), bDate = new Date(b.DateFrom);
return aDate - bDate;
});
var res = [{
Status: 1,
DateFrom: "2018-09-01 00:00",
DateTo: "2018-09-08 00:00"
}, {
Status: 1,
DateFrom: "2018-09-02 00:00",
DateTo: "2018-09-08 00:00"
}, {
Status: 1,
DateFrom: "2018-09-08 00:00",
DateTo: "2018-09-15 00:00"
}, {
Status: 1,
DateFrom: "2018-10-01 00:00",
DateTo: "2018-10-06 00:00"
}, {
Status: 1,
DateFrom: "2018-10-06 00:00",
DateTo: "2018-10-13 00:00"
}, {
Status: 1,
DateFrom: "2018-07-01 00:00",
DateTo: "2018-07-07 00:00"
}, {
Status: 1,
DateFrom: "2018-07-07 00:00",
DateTo: "2018-07-14 00:00"
}, {
Status: 1,
DateFrom: "2018-08-04 00:00",
DateTo: "2018-08-11 00:00"
}];
res.sort(function(a, b) {
var aDate = new Date(a.DateFrom), bDate = new Date(b.DateFrom);
return aDate - bDate;
});
console.log(res);
推荐阅读
- android - Android SDK 在 Nougat 和 Android10 之间更改通知和警报
- python - 打印函数结果 Python
- reactjs - 如何将食谱转换为每份的卡路里
- amazon-web-services - AWS CodeDeploy 与 Lambda 层
- c - 通过复合文字初始化结构变量 - 编译问题?
- flutter - 如何使用谷歌表将用户添加到 Firebase 身份验证
- google-apps-script - 将 docx 文件转换为 Google Docs 并放在同一文件夹中
- android - OkHttp 与 Android 网络安全配置中的证书固定
- javascript - 使用反应钩子切片 json 的数据
- android - 无法从已更改数据的片段中添加选项卡徽章