Vous devrez analyser les chaînes en Date() objets, ce qui serait assez simple s'il n'y avait pas une mauvaise mise en œuvre de l'analyse syntaxique de chaîne de date de IE. Heureusement, vous pouvez utiliser setDate() et setMonth() avec la cohérence entre les différents navigateurs, à la fois accepter les numéros - 1-31 pour setDate(), 0-11 pour setMonth(). La configuration d'un mappage d'objet pour les noms de mois aidera.
Cela fonctionne pour moi:
(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"]
J'ai mis en place un exemple pour vous - http://jsfiddle.net/Tw6xt/
Cela fonctionne à merveille! Je vous remercie –