Javascript 按日期对对象数组排序

Javascript 按日期对对象数组排序,javascript,arrays,Javascript,Arrays,这是一个JSON文件的结构,我在返回该文件并将其传递到一个数组后得到了它。我正在尝试按日期排序 var model = [ {id: "1", date: "2018-05-08", racedistance: "10000", race_name: "Riverside Park", venue_name: "Riverside Park", …}, {id: "140", date: "2018-05-01", racedistance: "42195", race_name: "Place

这是一个JSON文件的结构,我在返回该文件并将其传递到一个数组后得到了它。我正在尝试按日期排序

var model = [ {id: "1", date: "2018-05-08", racedistance: "10000", race_name: "Riverside Park", venue_name: "Riverside Park", …},
{id: "140", date: "2018-05-01", racedistance: "42195", race_name: "Placeholder Race Name 1", venue_name: "Riverside Park", …},
{id: "149", date: "2018-05-10", racedistance: "10000", race_name: "Placeholder Race Name 3", venue_name: "Riverside Park", …},
{id: "172", date: "2018-06-04", racedistance: "21097", race_name: "Placeholder Race Name 3", venue_name: "Riverside Park", …},
{id: "177", date: "2018-06-06", racedistance: "21097", race_name: "Placeholder Race Name 5", venue_name: "Riverside Park", …},
{id: "178", date: "2018-06-10", racedistance: "21097", race_name: "Placeholder Race Name 1", venue_name: "Riverside Park", …},
{id: "183", date: "2018-06-13", racedistance: "10000", race_name: "Placeholder Race Name 2", venue_name: "Riverside Park", …},
{id: "198", date: "2018-06-27", racedistance: "21097", race_name: "Placeholder Race Name 2", venue_name: "Riverside Park", …},
{id: "144", date: "2018-05-04", racedistance: "42195", race_name: "Placeholder Race Name 5", venue_name: "Albert Park", …}]
//这是我一直尝试使用的排序函数

function mycomparator(a,b) {
  return new Date(a.date, 10) - new Date(b.date, 10);
}
model.sort(mycomparator);
//这就是数组的返回方式

{id: "1", date: "2018-05-08", racedistance: "10000", race_name: "Riverside Park", venue_name: "Riverside Park", …},
{id: "192", date: "2018-06-23", racedistance: "10000", race_name: "Placeholder Race Name 2", venue_name: "Saltwell Park to Chopwell Woods", …},
{id: "149", date: "2018-05-10", racedistance: "10000", race_name: "Placeholder Race Name 3", venue_name: "Riverside Park", …},
{id: "172", date: "2018-06-04", racedistance: "21097", race_name: "Placeholder Race Name 3", venue_name: "Riverside Park", …},
{id: "177", date: "2018-06-06", racedistance: "21097", race_name: "Placeholder Race Name 5", venue_name: "Riverside Park", …},
{id: "178", date: "2018-06-10", racedistance: "21097", race_name: "Placeholder Race Name 1", venue_name: "Riverside Park", …},
{id: "183", date: "2018-06-13", racedistance: "10000", race_name: "Placeholder Race Name 2", venue_name: "Riverside Park", …}
我想按日期排序,最早的优先

var模型=[{id:“1”,日期:“2018-05-08”,赛程:“10000”,比赛名称:“河边公园”,场地名称:“河边公园”},
{id:“140”,日期:“2018-05-01”,赛程:“42195”,比赛名称:“占位符比赛名称1”,场地名称:“河边公园”},
{id:“149”,日期:“2018-05-10”,赛程:“10000”,比赛名称:“占位符比赛名称3”,场地名称:“河边公园”},
{id:“172”,日期:“2018-06-04”,赛程:“21097”,比赛名称:“占位符比赛名称3”,场地名称:“河边公园”},
{id:“177”,日期:“2018-06-06”,赛程:“21097”,比赛名称:“占位符比赛名称5”,场地名称:“河边公园”},
{id:“178”,日期:“2018-06-10”,赛程:“21097”,比赛名称:“占位符比赛名称1”,场地名称:“河边公园”},
{id:“183”,日期:“2018-06-13”,赛程:“10000”,比赛名称:“占位符比赛名称2”,场地名称:“河边公园”},
{id:“198”,日期:“2018-06-27”,赛程:“21097”,比赛名称:“占位符比赛名称2”,场地名称:“河边公园”},
{id:“144”,日期:“2018-05-04”,赛程:“42195”,比赛名称:“占位符比赛名称5”,场地名称:“阿尔伯特公园”};
模型.排序(函数(a,b){
a=新日期(a.日期);
b=新日期(b.日期);
返回ab?1:0;
});
用于(var输入模型){
console.log(型号[key].date);

}
这不是JSON。你的
Date
构造函数中的
10
是怎么回事?不太清楚这里到底是什么问题。“在某种程度上”不是很具有描述性。还不清楚什么是新日期(a.Date,10)产生的
无效日期
。请尝试使用浏览器的。只需删除
10
。由于日期是yyyy-mm-dd格式,您只需使用
a.date.localeCompare(b.date)
——字符串排序就可以了。@MikeMcCaughan甚至
-(ab)
,因为字符串支持不平等比较这非常有用,我发现这比前面的建议更难理解,我想这是因为我不确定三元运算符在return语句中到底在做什么,从一个日期减去另一个日期要简单得多(因为OP已经尝试过了)。在数组上使用
for..in
循环也不是一个好主意