以下JavaScript行在Chrome和IE上的执行方式不同。
var months = ["Apr-2016", "Jun-2016", "Feb-2016", "Jan-2016", "Mar-2016", "May-2016", "Feb-2016", "Jun-2016", "Feb-2016", "Feb-2016", "Jan-2016"] ;
var uniqueMonths = months.filter( function (value, index, self) { return self.indexOf(value) === index;} );
uniqueMonths.sort(function(a,b){ return ((new Date(a).getTime()) - (new Date(b).getTime())); });
在IE上我得到了
uniqueMonths = ["Apr-2016", "Jun-2016", "Feb-2016", "Jan-2016", "Mar-2016", "May-2016"]
在Chrome上我得到了
uniqueMonths = ["Jan-2016", "Feb-2016", "Mar-2016", "Apr-2016", "May-2016", "Jun-2016"] ;
这个beahaviour的原因是什么?
答案 0 :(得分:1)
您提供的日期文字无效。似乎Chrome仍在解析它。在这方面,Firefox跟随IE一样,正如它所说:
new Date("Apr-2016")
无效日期
最好使用ISO日期,或者如果你不这样做,我建议使用一个库,它提供了一种用指定的格式字符串初始化JavaScript Date的方法。不幸的是,原生JavaScript缺少此功能。