我得到了这个我想要排序的日期数组列表:
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不是一个函数。有任何想法吗?先谢谢!
答案 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为您进行排序:
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;