我有一个包含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"
}
答案 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);