Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
clasificación de fecha y hora con objetos anidados en javascript

Tengo una condición en la que estoy atascado en este momento, así que básicamente quiero ordenar mi matriz con los valores de su matriz anidada. Quiero ordenar la matriz principal llamada arr con la fecha y hora de su matriz anidada llamada notifications . Quiero que solo esos objetos sean los primeros que hayan actualizado createdAt de notifications .

 const arr = [ { "name": "Two" "notifications": [ { "name": "Notification of two (1)", "createdAt": "2021-03-17T10:30:03.629262Z" }, { "name": "Notification of two (1)", "createdAt": "2021-03-17T10:30:03.629262Z" } ] }, { "name": "One" "notifications": [ { "name": "Notification of one (1)", "createdAt": "2022-03-17T10:30:03.629262Z" }, { "name": "Notification of one (1)", "createdAt": "2022-03-17T10:30:03.629262Z" } ] } ]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay una manera de resolver el problema. Calcula la fecha máxima para la notificación de cada artículo y luego realiza una ordenación descendente en esa fecha máxima.

 const arr = [ { name: "Two", notifications: [ { name: "Notification of two (1)", createdAt: "2021-03-17T10:30:03.629262Z", }, { name: "Notification of two (1)", createdAt: "2021-03-17T10:30:03.629262Z", }, ], }, { name: "One", notifications: [ { name: "Notification of one (1)", createdAt: "2022-03-17T10:30:03.629262Z", }, { name: "Notification of one (1)", createdAt: "2022-03-17T10:30:03.629262Z", }, ], }, ]; const max_date = (x) => Math.max.apply( null, x.notifications.map((n) => new Date(n.createdAt)) ); // Descending sort by maximum date arr.sort((x, y) => max_date(y) - max_date(x)); console.log(arr);

Respuesta a la pregunta de seguimiento: si en lugar de createdAt ser una marca de tiempo, digamos que tiene un booleano llamado notified y desea ordenar los elementos notificados antes que los elementos no notificados.

En el siguiente ejemplo, simplemente contamos el número de propiedades notified=true y las ordenamos de forma descendente. Por lo tanto, todos los elementos con 1+ notified=true vienen antes que los elementos con 0 notified=true y un elemento con 2x notified=true viene antes que un elemento con 1x notified=true .

 const notif_count = (x) => x.notifications.filter((n) => n.notified).length; // Descending sort by count of notified=true arr.sort((x, y) => notif_count(y) - notif_count(x));
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda