我有一个包含这些值的数组
daterangefordb = [ "12/16/2015", "11/25/2015", "01/06/2016", "12/30/2015" ]
当我排序时,我会使用daterangefordb.sort()
:
[ "01/06/2016", "11/25/2015", "12/16/2015", "12/30/2015" ]
然而,预期的排序值应为 -
[ "11/25/2015", "12/16/2015", "12/30/2015", "01/06/2016" ]
任何解决方案?
答案 0 :(得分:2)
没有提供任何功能的sort()
方法将对数组的值执行简单的字母数字排序作为字符串。在您的情况下,您需要在比较之前将它们转换为日期。试试这个:
var sorted = daterangefordb.sort(function(a, b) {
var aDate = new Date(a);
var bDate = new Date(b);
if (aDate < bDate)
return -1;
else if (aDate > bDate)
return 1;
return 0;
});
答案 1 :(得分:0)
这些是字符串,因此正确排序。如果您希望将它们排序为daes,请将它们转换为日期
new Date( "11-05-2015".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
像这样的东西