Tri des tableaux d'objets par propriété de date
Problème : Vous disposez d'un tableau d'objets avec une propriété de date et souhaitez pour le trier par ordre décroissant en fonction de la date la plus proche du présent.
Solution :
Utilisation d'un comparateur personnalisé :
Une approche consiste à utiliser le tri intégré ( ) avec une fonction de comparaison personnalisée. La fonction de comparaison prend deux objets comme arguments, a et b, et renvoie une valeur négative, positive ou nulle si a doit venir avant b, après b ou s'ils doivent rester dans la même position, respectivement.
Pour trier par date, la fonction de comparaison convertirait les chaînes de date en dates JavaScript et les soustrait :
array.sort(function(a, b) { return new Date(b.date) - new Date(a.date); });
Générique Solution :
Une solution plus générique consiste à définir une fonction sortBy() personnalisée qui effectue une transformation schwartzienne sur le tableau. Cette fonction peut être utilisée pour trier par n'importe quelle propriété, pas seulement par la date.
(function() { if (!Array.prototype.sortBy) Array.prototype.sortBy = sb; function sb(f) { // ... implementation } })();
À l'aide de cette fonction personnalisée, vous pouvez trier par la propriété de date comme suit :
array.sortBy(function(o) { return o.date });
Gestion des comparaisons de dates complexes :
Si votre propriété de date n'est pas directement comparable, vous pouvez en extraire une valeur comparable, telle qu'une date JavaScript. object :
array.sortBy(function(o) { return new Date(o.date) });
Tri selon plusieurs critères :
Vous pouvez également utiliser la fonction sortBy() pour trier selon plusieurs critères. Renvoyez simplement un tableau de valeurs de la fonction de comparaison :
// Sort by date, then score (reversed), then name array.sortBy(function(o) { return [o.date, -o.score, o.name] });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!