我有这种刺痛:
2015年12月7日| Comment1,11 / 09/2015 | Comment2,31 / 07/2015 | Comment3,30 / 07/2015 | Comment4, 16/07/2015 | Comment5,09 / 07/2015 | Comment6,“
我试图取得这个结果:
2015年9月7日| Comment6,12 / 07/2015 | Comment1,16 / 07/2015 | Comment5,30 / 07/2015 | Comment4,31 / 07/2015 | Comment3,11 / 09/2015 |注释2 ,
到目前为止我的代码看起来像这样:
function rearangeDates(old_order){
var list = old_order.split(',');
list = list
.map( // for each element in the list (each date)
function(val,idx){
// use the first part(before the dot(.)), replace the - with spaces and convert to date
console.log(val.split('|')[0].split("/").join("-"))
return new Date(val.split('|')[0].split("/").join("-").replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
})
.sort(); // at the end sort the results.
console.log(list)
}
我的主要目标是安排日期,但此功能会导致:
[2015年7月31日星期五00:00:00 GMT + 0300(FLE白天时间), 2015年9月11日星期五00:00:00 GMT + 0300(FLE白天时间) - >这应该是数组的末尾,因为9月是7月之后,无效日期,2015年7月12日星期日00:00:00 GMT + 0300(FLE白天时间), 2015年7月9日星期四00:00:00 GMT + 0300(FLE白天时间),7月16日星期四 2015 00:00:00 GMT + 0300(FLE白天时间),2015年7月30日星期四00:00:00 GMT + 0300(FLE日光时间)]
答案 0 :(得分:1)
您需要将比较功能传递给sort
:
.sort(function(a, b){
return a.getTime() - b.getTime();
})
这应该按照正确的顺序对日期进行排序。
然后sort
将根据此函数的返回值对2个传递的值进行排序:
- 如果
compareFunction(a, b)
小于0,则将a排序为低于b的索引,即a先出现。- 如果
compareFunction(a, b)
返回0,则保持a和b相对于彼此保持不变,但是对所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如可追溯到至少2003年的Mozilla版本)都尊重这一点。- 如果
的索引 当给定一对特定元素a和b作为其两个参数时,compareFunction(a, b)
大于0,则将b排序为低于。compareFunction(a, b)
必须始终返回相同的值。如果返回不一致的结果,则排序顺序未定义