我有一组对象,我试图根据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]
举个例子,你的语法也被破坏了。您需要改为访问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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句