我有一系列日期$ myArray
(2012-09-31,1999-01-23,2018-08-29,1808-04-20,2017-11-05,1001-10-01,)
我想列出最新到最旧的日期,我正在使用函数
function myFunction() {
myArray.sort(function(a, b){return b-a});
}
上述函数似乎没有以任何特定方式对数组进行排序。
答案 0 :(得分:4)
在这种特殊情况下,您实际上可以使用.localeCompare()
进行比较。
原因是您的日期字符串被格式化为最具体的,并且长度都相同。
var myArray = ['2012-09-31', '1999-01-23', '2018-08-29', '1808-04-20', '2017-11-05', '1001-10-01'];
function myFunction() {
myArray.sort(function(a, b) {
return b.localeCompare(a);
});
}
myFunction();
console.log(myArray);

如果可以删除某个月或某天的前导0
,或者格式为yyyy-dd-mm
或mm-dd-yyyy
,则无效。
答案 1 :(得分:3)
您可以使用sort()
而不使用任何参数,因为它会按字母顺序排序,使用此时间格式,然后将其反转:
var list = ['2012-09-31', '1999-01-23', '2018-08-29' , '1808-04-20', '2017-11-05', '1001-10-01'];
console.log(list.sort().reverse());