Javascript 如何根据日期对对象数组进行排序
我有一个对象数组,我正试图根据Javascript 如何根据日期对对象数组进行排序,javascript,Javascript,我有一个对象数组,我正试图根据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
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])
});
然而,它不是排序
您正在将日期作为字符串进行比较。在进行比较之前,您需要将它们转换为日期对象 此外,您的[data.bean.createDate]语法在示例中也被破坏。您需要访问
obj.Test.createDate
最后,不要使用alert()
进行调试,尤其是对于任何比字符串更复杂的数据类型console.log()
更准确,因为它不强制数据类型,并允许您遍历级别或对象/数组
说了这么多,试试这个:
var数据=[{
“TestName”:“com.DPProgram”,
“测试”:{
“创建日期”:“2018-02-15T17:17:10.000+0530”,
“生效开始日期”:“1900-01-01T00:00:00.000+0530”,
“生效日期”:“2200-01-01T00:00:00.000+0530”
}
}, {
“TestName”:“com.callidus.quotapp.Tests.DPProgram”,
“测试”:{
“创建日期”:“2018-02-22T15:00:11.000+0530”,
“生效开始日期”:“2017-12-22T00:00:00.000+0530”,
“生效日期”:“2018-12-23T00:00:00.000+0530”
}
}, {
“TestName”:“com.Foo”,
“测试”:{
“创建日期”:“2018-02-07T15:00:11.000+0530”,
“生效开始日期”:“2017-12-22T00:00:00.000+0530”,
“生效日期”:“2018-12-23T00:00:00.000+0530”
}
}];
data=data.sort(函数(a,b){
var aDate=新日期(a.Test.createDate),
b日期=新日期(b.Test.createDate);
返回aDate>bDate?1:aDate
var数据=[{
“TestName”:“com.DPProgram”,
“测试”:{
“创建日期”:“2018-02-15T17:17:10.000+0530”,
“生效开始日期”:“1900-01-01T00:00:00.000+0530”,
“生效日期”:“2200-01-01T00:00:00.000+0530”
}
}, {
“TestName”:“com.DPProgram”,
“测试”:{
“创建日期”:“2018-02-22T15:00:11.000+0530”,
“生效开始日期”:“2017-12-22T00:00:00.000+0530”,
“生效日期”:“2018-12-23T00:00:00.000+0530”
}
},{
“TestName”:“com.DPProgram”,
“测试”:{
“创建日期”:“2018-02-25T15:00:11.000+0530”,
“生效开始日期”:“2017-12-22T00:00:00.000+0530”,
“生效日期”:“2018-12-23T00:00:00.000+0530”
}
}];
log(u.sortBy(数据,'createDate'))代码>
使用排序函数时,会得到两个参数,这两个参数是正在操作的数据数组的元素,因此需要使用它们:
data.sort(function(a, b) {
return a.Test.createDate - b.Test.createDate;
});
我编辑这个问题是为了删除对JSON和jQuery的引用,因为它们都与问题无关。