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

137
Vistas
Clasificación de clave de objeto Javascript usando moment.js

Tengo la siguiente estructura de objeto

 { "Apr-18" : { ... }, "Jan-18" : { ... }, "Feb-18" : { ... }, ... }

Estoy tratando de ordenar las teclas de mes (MMM-AA) para que se muestre de la siguiente manera

 { "Jan-18" : { ... }, "Feb-18" : { ... }, "Apr-18" : { ... }, ... }

Mi código para esto está abajo. Estoy usando moment.js para convertir la fecha en su época para la comparación de clasificación. Seguí aproximadamente la solución que se muestra aquí Ordenar objeto JavaScript por clave Sin embargo, no funciona.

El archivo console.log devuelve el objeto tal como estaba, no se ha producido ninguna clasificación. ¿Qué me estoy perdiendo?

 const object = { "Apr-18" : { "a":"b" }, "Jan-18" : { "c":"d" }, "Feb-18" : { "e":"f" } } const sortObjectMonths = (obj) => Object.fromEntries(Object.entries(obj).sort( (a, b) => Date.parse(moment(a, "MMM-YY") - Date.parse(moment(b, "MMM-YY"))) )); let sorted = sortObjectMonths(object) console.log(sorted)

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Su código está casi bien, pero en .sort(), los elementos a y b son matrices de clave y valor. La clave está en el índice 0 y el valor en el índice 1. Date.parse() no funcionará y se sugiere convertir el valor usando new Date(). Entonces, su código debería ser:

 const moment = require("moment"); const sort = { clientname: { "Feb-18": { test: "c" }, "Jan-18": { test: "a" }, "Apr-18": { test: "v" }, }, }; const sortObjectMonths = (obj) => { return Object.fromEntries( Object.entries(obj).sort( (a, b) => moment(new Date(a[0])) - moment(new Date(b[0])) ) ); }; let sorted = sortObjectMonths(sort.clientname); console.log(sorted);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar Object.entries() para obtener las claves y los valores de propiedad del objeto, luego use Array.sort() para ordenarlos usando el momento. Simplemente podemos restar los valores de momento para ordenarlos.

El Array.sort() acepta dos argumentos, firstEl, secondEl, en este caso serán [key1, value1], [key2, value2]. Podemos usar la desestructuración para escribirlos como ([a,],[b,]), donde ayb son las claves del objeto (por ejemplo, 'Abr-18').

Luego usaremos Object.fromEntries() para obtener nuestro objeto ordenado.

 const object = { "Apr-18" : { "a":"b" }, "Jan-18" : { "c":"d" }, "Feb-18" : { "e":"f" }, } console.log('Original object:', object) const sortedObject = Object.fromEntries( Object.entries(object).sort(([a,],[b,]) => { return moment(a, "MMM-YY") - moment(b, "MMM-YY"); }) ) console.log('Sorted object:', sortedObject)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" referrerpolicy="no-referrer"></script>

about 4 years ago · Juan Pablo Isaza Denunciar

0

sin momento

 const months = ["Jan","Feb","Mar","Apr"] const object = { "Apr-18" : { "a":"b" }, "Jan-18" : { "c":"d" }, "Feb-18" : { "e":"f" }, } const sortedObject = Object.fromEntries( Object.entries(object) .sort(([a,],[b,]) => months.indexOf(a.split("-")[0]) - months.indexOf(b.split("-")[0])) ) console.log('Sorted object:', sortedObject)

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