在多个项目上排序JS对象,包括日期

时间:2014-09-24 09:01:09

标签: javascript

尝试解决这个问题,但确实不确定

我有一个JSON对象,其中包含多个项目,如下所示

DATA_TABLE = [{"rownum": 0, "Surname": "Doe", "Firstname": "John", "Dob": "1 Jan 1980"}...]

我想通过DOB然后Surname然后firstname对数据进行排序,以获得相同的结果,例如sql语句

ORDER BY Dob, Surname, Firstname

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

DATA_TABLE.sort(function(a, b) {
  return new Date(a.Dob) - new Date(b.Dob) 
  || ((a.Surname   < b.Surname  ) ? -1 : (a.Surname   > b.Surname  ) ? 1 : 0)
  || ((a.Firstname < b.Firstname) ? -1 : (a.Firstname > b.Firstname) ? 1 : 0) ;
});

JsFiddle Sample

答案 1 :(得分:0)

您可以使用Alasql库:

 var DATA_TABLE = [{"rownum": 0, "Surname": "Doe", "Firstname": "John", "Dob": "1 Jan 1980"},
          {"rownum": 1, "Surname": "America", "Firstname": "Captain", "Dob": "1 Jan 1940"},];

 var res = alasql('SELECT *, DATE(Dob) AS d FROM ? ORDER BY d, Surname, Firstname',[DATA_TABLE]);

试试这个例子in jsFiddle

由于原始Dob列具有字符串类型,因此我将包含附加列“d”以进行正确排序。