¿Cómo puedo averiguar la fecha mínima y máxima de una serie de fechas? Actualmente, estoy creando una matriz como esta:
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"))
¿Hay una función incorporada para hacer esto o debo escribir la mía propia?
javascript
date
max
min
Leyenda
fuente
fuente
dates.push('2011/06/05')
. Usando cadenas, la matriz se puede ordenar simplemente y el primer y el último valor de los miembros devueltos y convertidos a fechas si es necesario.YYYY/MM/DD HH:MM:SS
y hay muchas cadenas involucradas, ¿recomendaría la comparación oNumber(new Date(dateString))
comparaciones de cadenas ?Algo como:
Probado en Chrome 15.0.854.0 dev
fuente
Array.reduce()
no disponible en IE antes de IE9. Aunque es una buena idea.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
y_.max
trabajar en arreglos de fechas; utilícelos si está usando Lodash o Underscore, y considere usar Lodash (que proporciona muchas funciones de utilidad como estas) si aún no lo está.Por ejemplo,
devolverá la segunda fecha en la matriz (porque es la más temprana).
fuente
Igual que aplicar, ahora con extensión :
(podría ser un comentario sobre la mejor respuesta)
fuente
Dado que las fechas se convierten a la época de UNIX (números), puede usar Math.max / min para encontrarlos:
(probado solo en Chrome, pero debería funcionar en la mayoría de los navegadores)
fuente
** Utilice operadores de propagación | ES6 **
Eso le dará la fecha mínima de la matriz.
fuente
ONELINER :
resultado en variables
min
ymax
, complejidad O (nlogn) , ejemplo editable aquí . Si su matriz tiene valores sin fecha (comonull
), primero límpielodates=dates.filter(d=> d instanceof Date);
.Mostrar fragmento de código
fuente
fuente
Las respuestas anteriores no manejan valores en blanco / indefinidos para solucionar esto Usé el siguiente código y reemplacé los espacios en blanco con NA:
He agregado una demostración simple de JavaScript aquí y la usé como filtro con AngularJS en este codepen
fuente
Esta es una manera particularmente excelente de hacer esto (puede obtener el máximo de una matriz de objetos usando una de las propiedades del objeto):
Math.max.apply(Math,array.map(function(o){return o.y;}))
Esta es la respuesta aceptada para esta página: encontrar el valor máximo de un atributo en una matriz de objetos
fuente
Usando Moment , Underscore y jQuery , para iterar una matriz de fechas.
JSON de muestra:
Javascript:
Espero eso ayude.
fuente