Necesito ordenar una matriz de fechas con sus tiempos en orden descendente pero los tiempos permanecen en orden ascendente con lodash.
const supplierDates = ["2022-02-14 10:00", "2022-02-14 08:00", "2022-02-14 09:00", "2022-02-17 19:00", "2022-02-18 18:00" results = _.orderBy(supplierDates, suppDate => suppDate, ['desc']);Esto ordena la matriz en orden descendente, pero estoy interesado en mantener un orden ascendente durante los MISMOS días (en este caso, el 14 de febrero)
Esto sucede porque está ordenando cadenas, mientras que quiere ordenar fechas.
Primero, ordene las fechas completas por orden asc, para mantener las horas de cada día.
Luego use substring para extraer SOLO la fecha de sus cadenas, y luego use Date.parse para analizar las fechas para que pueda ordenarlas:
const supplierDates = ["2022-02-14 08:00", "2022-02-14 10:00", "2022-02-14 07:00", "2022-02-17 19:00", "2022-02-18 18:00"]; const initialOrder = _.orderBy(supplierDates, suppDate => Date.parse(suppDate), ['asc']); const results = _.orderBy(initialOrder, suppDate => Date.parse(suppDate.substring(0, 10)), ['desc']); console.log(results); <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>