我必须处理一个对象数组,表示无序的日期和时间集合(我无法修改结构)并按最近的日期对其进行排序。
结构如下:
{
"H": 5,
"Date": {
Y: 2015
M: 3,
D: 21
}
}
所以,就像我说的那样,我必须先从最近的日期/小时开始排序。
提前致谢!
答案 0 :(得分:2)
你可以阅读它here on MDN
数组有一个排序功能:
arr.sort([compareFunction])
假设你有:
var myArr=[{
"H": 5,
"Date": {
Y: 2015,
M: 3,
D: 01
}
},{
"H": 5,
"Date": {
Y: 2015,
M: 3,
D: 21
}
},{
"H": 5,
"Date": {
Y: 2015,
M: 3,
D: 11
}
}];
您可以使用带有2个参数的functionj对其进行排序 - 每个参数都是要比较的对象:
例如
如果compareFunction(a,b)小于0,则将a排序为低于的索引 b,即a先出现。
因此,您现在可以创建2个日期进行比较
myArr.sort(function (a,b){ return new Date(a.Date.Y,a.Date.M,a.Date.D,a.H,0,0) - new Date(b.Date.Y,b.Date.M,b.Date.D,b.H,0,0)})
你可能想要注意到
new Date(1978,11,22) - new Date(1978,11,21)
将产生一个数字:
86400000
,而
new Date(1978,11,22)
将产生另一种表示
Fri Dec 22 1978 00:00:00 GMT+0200 (Jerusalem Standard Time)
(取决于当地环境)