Вам придется анализировать строки в Date () объектах, что было бы достаточно просто, если бы не плохая реализация IE разбора строки даты в IE.К счастью, вы можете использовать setDate () и setMonth () с согласованностью в разных браузерах, оба принимают числа - 1-31 для setDate () , 0-11для setMonth () .Настройка карты объектов для названий месяцев поможет.
Это работает для меня:
(function () {
// Set up our variables, 2 date objects and a map of month names/numbers
var ad = new Date(),
bd = new Date(),
months = {
Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov:10, Dec:12
};
MyArray.sort(function (a,b) {
// Split the text into [ date, month ]
var as = a.split(' '),
bs = b.split(' ');
// Set the Date() objects to the dates of the items
ad.setDate(as[0]);
ad.setMonth(months[as[1]]);
bd.setDate(bs[0]);
bd.setMonth(months[bs[1]]);
/* A math operation converts a Date object to a number, so
it's enough to just return date1 - date2 */
return ad - bd;
});
})();
//-> ["09 Jun", "13 Jun", "30 Jun", "13 Aug", "25 Aug"]
Я создал для вас пример - http://jsfiddle.net/Tw6xt/