我下面有一个JavaScript数组。
const arr = [
"2016-10-10 12:03:05",
"2016-10-10 12:03:05",
"2016-10-10 2:30:01",
"2016-10-10 2:30:01",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 1:04:01",
"2016-10-10 1:04:01"
];
我想先按降序或最新日期排序。
我期待下面的代码为我排序数据
console.log('the real sort is', arr.sort((a,b) => moment(b).diff(moment(a))));
但是,以上打印
[
"2016-10-10 12:03:05",
"2016-10-10 12:03:05",
"2016-10-10 2:30:01",
"2016-10-10 2:30:01",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 1:04:01",
"2016-10-10 1:04:01"
]
和 console.log('真正的排序是',arr.sort((a,b)=>时刻(a).diff(时刻(b))));
返回
[
"2016-10-10 1:04:01",
"2016-10-10 1:04:01",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 2:00:06",
"2016-10-10 2:30:01",
"2016-10-10 2:30:01",
"2016-10-10 12:03:05",
"2016-10-10 12:03:05"
]
在我看来它只是反转索引。请问我该如何对这种数组进行相应的排序?任何帮助将不胜感激
更新
非常抱歉浪费你的时间。我天真地忘了,误以为并且期待时间是12小时格式,因此期待下午时间晚于时间。不仅我错了,而且事实证明我们有一个角度管道将显示器转换为12小时当量和当地时间。所以我的转换应该没问题,不幸的是我花了很多时间才意识到这一点。我再次道歉。
答案 0 :(得分:1)
您可以在没有moment
的情况下轻松完成此操作:
arr.sort((a, b) => new Date(a) - new Date(b));
当你减去2个日期对象时,将调用它们的valueOf()
方法,它返回与该日期对应的时间戳。