Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据日期对对象数组进行排序_Javascript - Fatal编程技术网

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的引用,因为它们都与问题无关。