Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

306
Visualizações
Cómo ordenar la lista de objetos por fecha y hora en React JS o Java script usando moment js

Estaba trabajando con algunos datos que se ven así.

 response={data:[{ "time": "08:00", "date": "2022-06-30" }, { "time": "16:30", "date": "2022-06-30", }, { "time": "17:00", "date": "2022-06-27" }, { "time": "11:00", "date": "2022-06-14" }, { "time": "17:00", "date": "2022-06-14" }, { "time": "08:30", "date": "2022-06-02" }, { "time": "16:30", "date": "2022-06-02" }, { "time": "16:30", "date": "2022-06-02" }, { "time": "16:25", "date": "2022-06-02", }]}

Quería ordenar estos datos por dos campos (hora y fecha).

  • por fecha, debe estar en orden ascendente
  • por tiempo, debe estar en orden ascendente si las fechas son las mismas en algunos elementos

requisito se ve bastante sorprendente. Busqué en Internet pero no puedo obtener los resultados requeridos.

así que pasé un tiempo en ello e hice mi propia solución. así que estoy aquí para compartir esta solución con stackoverflow-community.

aquí está mi solución .

 import moment from 'moment'; import { forEach, get, reverse } from 'lodash'; const data = get(response, 'data', []); //as data looks already in descending order by date reverse(data); //place datetime object in all items forEach(data, function(item) { item['datetime'] = moment(item.date + 'T' + item.time + ':' + '00'); }); //re-sort data by time in ascending order using datetime object data.sort(function(a, b) { return a.datetime - b.datetime; });

está funcionando bien, pero avíseme si tenemos una solución mejor que debería ser eficiente.

también hágamelo saber acerca de sus comentarios para esta solución.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La tarea también se puede realizar sin lodash, simplemente comparando cadenas de fecha y hora. La comparación de las fechas ocurre primero. Si uno es más grande que el otro entonces la segunda comparación de los tiempos ni siquiera ocurrirá, ya que || El operador (o) solo evaluará su segundo argumento si el primer argumento se calculó como "falso" (en nuestro caso, 0 ).

 const response={data:[{ "time": "08:00", "date": "2022-06-30" }, { "time": "16:30", "date": "2022-06-30" }, { "time": "17:00", "date": "2022-06-27" }, { "time": "11:00", "date": "2022-06-14" }, { "time": "17:00", "date": "2022-06-14" }, { "time": "08:30", "date": "2022-06-02" }, { "time": "16:30", "date": "2022-06-02" }, { "time": "16:30", "date": "2022-06-02" }, { "time": "16:25", "date": "2022-06-02" }]}; const res=response.data.slice(0).sort((a,b)=> a.date.localeCompare(b.date)||a.time.localeCompare(b.time)); console.log(res);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda