Disons que j'ai un tableau de quelques objets:
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];
Comment puis-je trier ce tableau par l'élément date dans l'ordre à partir de la date la plus proche de la date et de l'heure actuelles? Gardez à l'esprit que le tableau peut contenir de nombreux objets, mais pour des raisons de simplicité, j'ai utilisé 2.
Vais-je utiliser la fonction de tri et un comparateur personnalisé?
MISE À JOUR:
Dans mon cas particulier, je voulais que les dates soient arrangées du plus récent au plus ancien. Il s'est avéré que j'ai dû inverser la logique de la fonction simple comme suit:
array.sort(function(a, b) {
a = new Date(a.dateModified);
b = new Date(b.dateModified);
return a>b ? -1 : a<b ? 1 : 0;
});
Cela trie les dates des plus récentes.
javascript
datetime
ryandlf
la source
la source
Réponses:
Réponse la plus simple
Réponse plus générique
Ou plus laconiquement:
Réponse générique et puissante
Définissez une
sortBy
fonction non énumérable personnalisée à l'aide d'une transformation Schwartzian sur tous les tableaux:Utilisez-le comme ceci:
Si votre date n'est pas directement comparable, faites-en une date comparable, par exemple
Vous pouvez également l'utiliser pour trier selon plusieurs critères si vous retournez un tableau de valeurs:
Voir http://phrogz.net/JS/Array.prototype.sortBy.js pour plus de détails.
la source
return b-a;
dans la réponse simple?Les réponses @Phrogz sont excellentes, mais voici une excellente réponse, plus concise:
Utilisation de la fonction de flèche
trouvé ici: Trier la date en Javascript
la source
a - b
fonctionnerait également. Donc,array.sort((a, b) => a - b)
(es6)Après avoir corrigé le JSON, cela devrait fonctionner pour vous maintenant:
la source
Vos données nécessitent quelques corrections:
Après avoir corrigé les données, vous pouvez utiliser ce morceau de code:
la source
0
si nécessaire!Je recommande GitHub: Array sortBy - une meilleure implémentation de
sortBy
méthode qui utilise la transformation SchwartzianMais pour l'instant nous allons essayer cette approche Gist: sortBy-old.js .
Créons une méthode pour trier les tableaux pouvant arranger les objets selon une propriété.
Création de la fonction de tri
Définition de données non triées
En l'utilisant
Enfin, nous organisons le tableau, par
"date"
propriété commestring
Si vous souhaitez ignorer la casse des lettres, définissez le
"parser"
rappel:Si vous souhaitez traiter le champ "date" comme du
Date
type:Ici, vous pouvez jouer avec l'exemple ci-dessus:
jsbin.com/lesebi
la source
Cela devrait être fait lorsque votre date est dans ce format (jj / mm / aaaa).
Appelez ensuite
sortByDate(myArr);
la source
Vous pouvez utiliser sortBy dans le soulignement js.
http://underscorejs.org/#sortBy
Échantillon:
la source
Je vais ajouter ceci ici, car certaines utilisations peuvent ne pas être en mesure de déterminer comment inverser cette méthode de tri.
Pour trier par "venir", nous pouvons simplement échanger a & b, comme ceci:
Notez que
a
c'est maintenant sur le côté gauche, etb
sur la droite,: D!la source
J'utilise personnellement l'approche suivante pour trier les dates.
la source
j'ai pu réaliser le tri en utilisant les lignes ci-dessous:
la source
la source
Pour tous ceux qui souhaitent trier par date (format UK), j'ai utilisé ce qui suit:
la source
Je viens de prendre la transformée schwartzienne représentée ci-dessus et faite comme fonction. Il faut un
array
, le trifunction
et un booléen en entrée:la source
Merci Ganesh Sanap. tri des éléments par champ de date de l'ancien au nouveau. Utilise le
la source
Si comme moi, vous avez un tableau avec des dates formatées comme
YYYY[-MM[-DD]]
où vous souhaitez commander des dates plus spécifiques avant des dates moins spécifiques, j'ai trouvé cette fonction pratique:la source
la source