使用JavaScript以字符串格式排序日期

时间:2017-08-26 11:19:03

标签: javascript arrays sorting date

我得到了这个我想要排序的日期数组列表:

var arr = ['2017/12/16', 
'2017/05/01',
'2017/04/20',
'2017/03/10',
'2017/08/12',
'2017/03/06',
'2017/02/04',
'2017/01/07',
'2016/02/08',
'2015'09/08'];

它们采用yyyy / mm / dd格式。我尝试使用此函数进行排序:

arr.sort(function(a,b) {
 a = a.split('/').reverse().join('');
  b = b.split('/').reverse().join('');
  return a > b ? 1 : a < b ? -1 : 0;
});

然而,它告诉我a.split不是一个函数。有任何想法吗?先谢谢!

2 个答案:

答案 0 :(得分:3)

无需转换数组中的字符串,只需使用Array#sort的默认行为来比较字符串:

var arr = [
    '2017/12/16',
    '2017/05/01',
    '2017/04/20',
    '2017/03/10',
    '2017/08/12',
    '2017/03/06',
    '2017/02/04',
    '2017/01/07',
    '2016/02/08',
    '2015/09/08'
];

arr.sort();

console.log(arr);

答案 1 :(得分:1)

而不是拆分/反向/连接只需将字符串转换为Date对象,让javascript为您进行排序:

&#13;
&#13;
var arr = ['2017/12/16', 
'2017/05/01',
'2017/04/20',
'2017/03/10',
'2017/08/12',
'2017/03/06',
'2017/02/04',
'2017/01/07',
'2016/02/08',
'2015/09/08'
];

arr.sort(function(a, b) {
  da = new Date(a);
  db = new Date(b);
  if (da == db) {
    return 0;
  }
  return da > db ? 1 : -1;
});

console.log(arr);
&#13;
&#13;
&#13;