[英]Array sorting date is not working as expected
我有一个包含这些值的数组
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" ]
有什么办法吗?
不提供任何功能的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;
});
这些是字符串,因此已正确排序。 如果您希望将它们按日期排序,则将它们转换为日期
new Date( "11-05-2015".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
像这样的东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.