对JS对象的多个项目进行排序,包括日期

sort JS object on multiple items, including Dates

本文关键字:排序 包括 日期 项目 对象 JS      更新时间:2023-09-26

试图解决这个问题,但不确定是否真的是

我有一个JSON对象,它包含多个项目,如下面的

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

我想按DOB、姓氏和名字对数据进行排序,以获得相同的结果,例如sql语句

ORDER BY Dob, Surname, Firstname

您可以使用以下代码:

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) ;
});

Js投标样品

您可以使用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]);

在jsFiddle中尝试这个例子。

由于原始的Dob列具有字符串类型,为了正确排序,我添加了额外的列"d"。