如何从javascript

时间:2015-05-31 19:46:53

标签: javascript arrays sorting

我必须处理一个对象数组,表示无序的日期和时间集合(我无法修改结构)并按最近的日期对其进行排序。

结构如下:

{
  "H": 5,
  "Date": {
    Y: 2015
    M: 3,
    D: 21
  }
}

所以,就像我说的那样,我必须先从最近的日期/小时开始排序。

提前致谢!

1 个答案:

答案 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)

(取决于当地环境)

http://jsbin.com/gusokamoye/3/edit