Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript按年份描述、月份ASC、日期ASC对数组中的日期进行排序_Javascript_Php_Arrays_Sorting_Date - Fatal编程技术网

Javascript按年份描述、月份ASC、日期ASC对数组中的日期进行排序

Javascript按年份描述、月份ASC、日期ASC对数组中的日期进行排序,javascript,php,arrays,sorting,date,Javascript,Php,Arrays,Sorting,Date,我有一个类数组和它们从AJAX到PHP调用返回的日期。它以“数据”的形式返回,因此我们只调用数组数据: var data = [{ "course": "First Aid", "courseDate": "2016-04-25T00:00:00-06:00" }, { "course": "CPR", "courseDate": "2016-04-06T00:00:00-06:00" }, { "course": "ASL1", "courseDate": "2016-

我有一个类数组和它们从AJAX到PHP调用返回的日期。它以“数据”的形式返回,因此我们只调用数组数据:

var data = [{
  "course": "First Aid",
  "courseDate": "2016-04-25T00:00:00-06:00"
}, {
  "course": "CPR",
  "courseDate": "2016-04-06T00:00:00-06:00"
}, {
  "course": "ASL1",
  "courseDate": "2016-01-07T00:00:00-06:00"
}, {
  "course": "ASL2",
  "courseDate": "2016-03-25T00:00:00-06:00"
},
...etc...
];
我需要能够显示他们按日期降序排序。我正在使用这个简单的函数:

data.sort(function(a, b) {
   a = new Date(a.courseDate);
   b = new Date(b.courseDate);
   return a > b ? -1 : a < b ? 1 : 0;
});

$.each(data, function(key, val) {
   $('#courseHist').append('<br />' + val.course+' - '+val.courseDate);
});
从技术上讲,这是按日期降序排序的。但是,我需要返回按年份递减排序,然后按月份递增排序,然后按日期递增排序。像这样:

ASL2 - 2016-03-25...
CPR - 2016-04-06...
1st Aid - 2016-04-25...
ASL1 - 2015-12-07...
我知道我需要把我的约会回程分成几段,然后再安排,但我就是不知道该怎么做。非常感谢您的帮助

或者,如果有人能解决这个问题,我也可以在PHP端完成


如果你想搞砸的话,我有一把小提琴使用用户blex的工作代码进行更新

Yo可以分割数据,并按年份、月份和日期分别对其进行排序

var数据=[{“课程”:“急救”,“课程”:“2016-04-25T00:00:00-06:00”},{“课程”:“CPR”,“课程”:“2016-04-06T00:00:00-06:00”},{“课程”:“ASL1”,“课程”:“2016-01-07T00:00-06:00”},{“课程”:“ASL2”,“课程”:“2016-03-25T00:00-06:00”},{“课程”:“ASL2;
数据排序(函数(a,b){
var aa=a.courseDate.split(/\D/),
bb=b.courseDate.split(/\D/);
返回bb[0]-aa[0]|aa[1]-bb[1]||aa[2]-bb[2];
});

document.write(''+JSON.stringify(数据,0,4)+'')创建日期实例后,可以使用提取年份(
.getFullYear()
)、月份(
.getMonth()
)、月日(
.getDate()
)等。这是我最初的想法,但我真的很难弄清楚如何在函数中实际写出它。这就是我需要它做的。固定小提琴:它将开始按年份排序(降序),如果它们相等,则按月份排序(升序),如果它们相等,则按月份的日期排序(升序)。@DanKaufman首先比较年份。如果它们相等,比较月份。如果他们是平等的,比较一下日子。老兄,我发誓我做这项工作的时间越长,我就越忽略那些简单的事情。谢谢你,布莱克斯-太棒了。更干净了!美好的谢谢。您可以执行
拆分(/\D/)
,不需要g标志。已保存3个字符!;-)@罗布。。。总是有一个较短的正则表达式…:)
ASL2 - 2016-03-25...
CPR - 2016-04-06...
1st Aid - 2016-04-25...
ASL1 - 2015-12-07...