Comment puis-je connaître la date minimale et la date maximale à partir d'un tableau de dates? Actuellement, je crée un tableau comme celui-ci:
var dates = [];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
dates.push(new Date("2011/06/28"))
Existe-t-il une fonction intégrée pour faire cela ou dois-je écrire la mienne?
javascript
date
max
min
Légende
la source
la source
dates.push('2011/06/05')
. En utilisant des chaînes, le tableau peut être simplement trié et les premières et dernières valeurs de membre renvoyées et converties en dates si nécessaire.YYYY/MM/DD HH:MM:SS
et qu'il y a beaucoup de chaînes impliquées, recommanderiez-vous une comparaison ou desNumber(new Date(dateString))
comparaisons de chaînes ?Quelque chose comme:
Testé sur Chrome 15.0.854.0 dev
la source
Array.reduce()
non disponible dans IE avant IE9. Bonne idée cependant.function foreach(func, array) { for(var i = 0; i != array.length; ++i) { func(array[i]); } } function reduce(combine, base, array) { foreach(function(element) { base = combine(base, element); }, array); return base; }
_.min
et_.max
travailler sur des tableaux de dates; utilisez-les si vous utilisez Lodash ou Underscore, et envisagez d'utiliser Lodash (qui fournit de nombreuses fonctions utilitaires comme celles-ci) si vous ne l'êtes pas déjà.Par exemple,
renverra la deuxième date dans le tableau (car c'est la plus ancienne).
la source
Identique à appliquer, maintenant avec propagation :
(pourrait être un commentaire sur la meilleure réponse)
la source
Puisque les dates sont converties en epoch UNIX (nombres), vous pouvez utiliser Math.max / min pour les trouver:
(testé uniquement dans Chrome, mais devrait fonctionner dans la plupart des navigateurs)
la source
** Utiliser les opérateurs de diffusion | ES6 **
Cela donnera la date minimale du tableau.
la source
ONELINER :
résultent en variables
min
etmax
, complexité O (nlogn) , exemple modifiable ici . Si votre tableau a des valeurs sans date (commenull
), nettoyez-le d'aborddates=dates.filter(d=> d instanceof Date);
.Afficher l'extrait de code
la source
la source
Les réponses ci-dessus ne gèrent pas les valeurs vides / non définies pour résoudre ce problème.J'ai utilisé le code ci-dessous et remplacé les blancs par NA:
J'ai ajouté une démo javascript simple ici et je l'ai utilisée comme filtre avec AngularJS dans ce codepen
la source
C'est un moyen particulièrement efficace de le faire (vous pouvez obtenir le maximum d'un tableau d'objets en utilisant l'une des propriétés de l'objet):
Math.max.apply(Math,array.map(function(o){return o.y;}))
Voici la réponse acceptée pour cette page: Recherche de la valeur maximale d'un attribut dans un tableau d'objets
la source
Utilisation de Moment , Underscore et jQuery , pour parcourir un tableau de dates.
Exemple de JSON:
Javascript:
J'espère que ça aide.
la source