Javascript对象数组按日期排序不按预期工作

时间:2018-12-18 15:40:33

标签: javascript arrays sorting date

我有一个包含5个项目的javascript对象数组。每个字段都有一个日期字段。日期格式如下:Mon Dec 17 2018 19:28:29 GMT-0500 (Eastern Standard Time) {}

当我尝试这样做时:  myArray.sort(function(a, b) { return b.CreateTime - a.CreateTime ;})

数组未排序,即,具有最早的CreateTime字段值的对象不在顶部或底部,而是在中间。

我也尝试过这个:

myArray.sort(function(a, b) { return (new Date(b.CreateTime.getTime())) - (new Date(a.CreateTime.getTime())) ;})

没用。

也尝试过:

myArray.sort(function(a, b) { return (new Date(b.CreateTime)) - (new Date(a.CreateTime)) ;})

还是走吧。

在线搜索说这是按日期对JS对象数组进行排序的方法。

那么,我想念什么?

这是一个示例对象:

{
 "Identifier": "prd17865EXC",
 "Type": "large",
 "Status": "available",
 "UN": "u367892",
 "DBN": "sprtdb",
 "EP": {
         "Prod": "excersizeMachine1",
         "Number": 57477367
       },
 "CreateTime": "2018-12-18T00:28:29.803Z"
}

2 个答案:

答案 0 :(得分:2)

我相信您在第二种方法中有错字。 您想在新创建的日期而不是您的初始日期致电getTime()

应该是:

myArray.sort(function(a, b) {
  return new Date(b.CreateTime).getTime() - new Date(a.CreateTime).getTime();
});

答案 1 :(得分:0)

let myArray = [{
  CreateTime :"2018-12-18T00:28:29.803Z"
  },
  {
  CreateTime :"2018-12-16T00:28:29.803Z"
  }
];

myArray.sort( (a,b) => {
  dateA = new Date(a.CreateTime);
  dateB = new Date(b.CreateTime);
  
  return dateA - dateB;
});

console.log(myArray);