Digamos que tengo una serie de algunos objetos:
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];
¿Cómo puedo ordenar esta matriz por el elemento de fecha en orden desde la fecha más cercana a la fecha y hora actual? Tenga en cuenta que la matriz puede tener muchos objetos, pero por simplicidad usé 2.
¿Usaría la función de clasificación y un comparador personalizado?
ACTUALIZAR:
En mi caso específico, quería que las fechas se organizaran desde la más reciente hasta la más antigua. Terminó teniendo que revertir la lógica de la función simple así:
array.sort(function(a, b) {
a = new Date(a.dateModified);
b = new Date(b.dateModified);
return a>b ? -1 : a<b ? 1 : 0;
});
Esto ordena las fechas de la más reciente.
javascript
datetime
ryandlf
fuente
fuente
Respuestas:
La respuesta más simple
Respuesta más genérica
O más brevemente:
Respuesta genérica y poderosa
Defina una función personalizada no enumerable
sortBy
utilizando una transformación de Schwartzian en todas las matrices:Úselo así:
Si su fecha no es directamente comparable, haga una fecha comparable, p. Ej.
También puede usar esto para ordenar por múltiples criterios si devuelve una matriz de valores:
Ver http://phrogz.net/JS/Array.prototype.sortBy.js para más detalles.
fuente
return b-a;
en la respuesta simple?Las respuestas de @Phrogz son excelentes, pero aquí hay una respuesta excelente y más concisa:
Usando la función de flecha
encontrado aquí: Ordenar la fecha en Javascript
fuente
a - b
también funcionaría. Entonces,array.sort((a, b) => a - b)
(es6)Después de corregir el JSON, esto debería funcionar para usted ahora:
fuente
Sus datos necesitan algunas correcciones:
Después de corregir los datos, puede usar este código:
fuente
0
donde sea necesario!Recomiendo GitHub: Array sortBy : una mejor implementación del
sortBy
método que utiliza la transformación SchwartzianPero por ahora vamos a probar este enfoque Gist: sortBy-old.js .
Creemos un método para ordenar las matrices pudiendo organizar los objetos por alguna propiedad.
Crear la función de clasificación
Establecer datos sin clasificar
Usándolo
Finalmente, organizamos la matriz, por
"date"
propiedad comostring
Si desea ignorar mayúsculas y minúsculas, configure la
"parser"
devolución de llamada:Si desea tratar el campo "fecha" como
Date
tipo:Aquí puedes jugar con el ejemplo anterior:
jsbin.com/lesebi
fuente
Esto debería hacerse cuando su fecha esté en este formato (dd / mm / aaaa).
Luego llame
sortByDate(myArr);
fuente
Puede usar sortBy en subrayado js.
http://underscorejs.org/#sortBy
Muestra:
fuente
Voy a agregar esto aquí, ya que algunos usos pueden no ser capaces de resolver cómo invertir este método de clasificación.
Para ordenar por 'venir', simplemente podemos intercambiar a & b, así:
Observe que
a
ahora está en el lado izquierdo yb
en el derecho: D!fuente
Yo personalmente uso el siguiente enfoque para ordenar las fechas.
fuente
pude lograr la clasificación usando las siguientes líneas:
fuente
fuente
Para cualquiera que quiera ordenar por fecha (formato del Reino Unido), utilicé lo siguiente:
fuente
Acabo de tomar la transformación de Schwartzian que se muestra arriba y la hice como función. Toma un
array
, la clasificaciónfunction
y un booleano como entrada:fuente
Gracias Ganesh Sanap. ordenar elementos por campo de fecha de antiguo a nuevo. Úsalo
fuente
Si como yo tiene una matriz con fechas formateadas como
YYYY[-MM[-DD]]
donde le gustaría ordenar fechas más específicas antes que las menos específicas, se me ocurrió esta práctica función:fuente
fuente