2016-10-07 2 views
1

У меня есть массив, как этотСортировка массива строк с использованием формата даты

["Apr 2014", "Sep 2015", "Jul 2010", "Jun 2016", "Sep 2013"] 

Я хочу, чтобы отсортировать этот массив в качестве даты. Но когда я использую эту функцию в качестве даты new Date("Apr 2014"), она показывает неверную ошибку формата даты.

Как я могу отсортировать этот массив?

+0

Не видя никакого кода, то трудно предположить улучшение, даже если фактическая проблема проста. –

ответ

1

Вы можете использовать функцию, которая разделяет строку даты и возвращает массив с годом и числом месяцев. Месяц берется из объекта с именами месяцев как хэши.

var array = ["Apr 2014", "Sep 2015", "Jul 2010", "Jun 2016", "Sep 2013", "Jan 2013"]; 
 
array.sort(function (a, b) { 
 
    function getMonth(m) { 
 
     return { 
 
      jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12 
 
     }[m.slice(0, 3).toLowerCase()] || 0; 
 
    } 
 

 
    var aa = a.split(' '), 
 
     bb = b.split(' '); 
 

 
    return aa[1] - bb[1] || getMonth(aa[0]) - getMonth(bb[0]); 
 
}); 
 
console.log(array);

Смежные вопросы