如果我有一个类似如下的数组:
var array=['Professional Centers-Beijing, China Monday, July 2, 2018 9 AM',
'Professional Centers-Beijing, China Monday, July 2, 2018 3 PM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 9 AM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 3 PM',
'The London Centre Monday, July 2, 2018 9 AM',
'The London Centre Monday, July 2, 2018 3 PM',
'The London Centre Tuesday, July 3, 2018 8 AM',
'The London Centre Tuesday, July 3, 2018 2 PM',
'The London Centre Wednesday, July 4, 2018 9 AM',
'Professional Centers-NY Monday, July 2, 2018 9 AM',
'Professional Centers-NY Friday, July 6, 2018 8 AM',
'Professional Centers-NY Monday, July 2, 2018 3 PM',
'Professional Centers-NY Saturday, July 7, 2018 10 AM',
'Professional Centers-NY Monday, July 9, 2018 9 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 8 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 2 PM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 8 AM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 2 PM',
'CTU Training Solutions Cape Town Friday, July 6, 2018 8 AM'];
是否可以根据数组索引处字符串中间的日期对数组进行排序,以使结果数组为:
['Professional Centers-Beijing, China Monday, July 2, 2018 9 AM',
'Professional Centers-Beijing, China Monday, July 2, 2018 3 PM',
'The London Centre Monday, July 2, 2018 9 AM',
'The London Centre Monday, July 2, 2018 3 PM',
'Professional Centers-NY Monday, July 2, 2018 9 AM',
'Professional Centers-NY Monday, July 2, 2018 3 PM',
'The London Centre Tuesday, July 3, 2018 8 AM',
'The London Centre Tuesday, July 3, 2018 2 PM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 9 AM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 3 PM',
'The London Centre Wednesday, July 4, 2018 9 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 8 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 2 PM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 8 AM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 2 PM',
'Professional Centers-NY Friday, July 6, 2018 8 AM',
'CTU Training Solutions Cape Town Friday, July 6, 2018 8 AM',
'Professional Centers-NY Saturday, July 7, 2018 10 AM',
'Professional Centers-NY Monday, July 9, 2018 9 AM'];
发布于 2018-06-08 03:39:45
你必须提取带有日期的部分来比较它的值,这可以通过向Array.sort
传递一个自定义函数来实现-但要知道日期的转换高度依赖于浏览器-你可能想要使用momentjs进行健壮的日期转换。对我来说,这个脚本在Chrome上运行得很好,但在其他浏览器上可能就不行了。
var array = ['Professional Centers-Beijing, China Monday, July 2, 2018 9 AM',
'Professional Centers-Beijing, China Monday, July 2, 2018 3 PM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 9 AM',
'Professional Centers-Beijing, China Wednesday, July 4, 2018 3 PM',
'The London Centre Monday, July 2, 2018 9 AM',
'The London Centre Monday, July 2, 2018 3 PM',
'The London Centre Tuesday, July 3, 2018 8 AM',
'The London Centre Tuesday, July 3, 2018 2 PM',
'The London Centre Wednesday, July 4, 2018 9 AM',
'Professional Centers-NY Monday, July 2, 2018 9 AM',
'Professional Centers-NY Friday, July 6, 2018 8 AM',
'Professional Centers-NY Monday, July 2, 2018 3 PM',
'Professional Centers-NY Saturday, July 7, 2018 10 AM',
'Professional Centers-NY Monday, July 9, 2018 9 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 8 AM',
'CTU Training Solutions Cape Town Wednesday, July 4, 2018 2 PM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 8 AM',
'CTU Training Solutions Cape Town Thursday, July 5, 2018 2 PM',
'CTU Training Solutions Cape Town Friday, July 6, 2018 8 AM'];
function dateParser(d) {
// This splits the string at each , and joins the last two parts
let dateString = d.split(', ').slice(-2).join(', ').trim();
// Without moment.js this could not be easily parsed so you need it
return moment(dateString, 'MMMM D, YYYY H A');
}
array.sort(function(a, b) {
return dateParser(a) - dateParser(b)
});
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
https://stackoverflow.com/questions/50748933
复制相似问题