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

109
Vistas
cómo escribir meses completos con clave de objeto donde los meses están en números

Actualmente estoy un poco confundido por qué mi código no funciona según lo previsto, y esperaba que pudieran ayudarme.

Tengo un objeto con año y meses.

 chosenMonths = {[ 2022: [0,1,2] 2018: [9,10] 2017: [11] ]}

Tengo una función que convertirá el número en meses escritos:

 const writeOutMonth = function(num, locale) { const date = new Date(); date.setMonth(num); return date.toLocaleString(locale, {month: 'long',}); }

Y dentro de mi código tengo Object.keys donde quiero imprimir el año y luego los meses escritos en la página.

 ${Object.keys(chosenMonths).reverse().map((year) => html`<p1> ${year}: ${writeOutMonth(chosenMonth[year].sort().join(', '), 'en-gb')}</p>`)}

En este momento, veo que se renderizará:

 2022: Invalid Date 2021: Invalid Date 2017: December

Mi pregunta es: ¿por qué es una fecha no válida, cuando tengo varios números en un año, y cómo hago para que funcione?

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

0

Tuve que hacer modificaciones para que el código se ejecutara, creo que eso es lo que necesitas, el problema era que estabas pasando una cadena compuesta por meses, en lugar de pasar un mes, cambié el método para recibir una matriz de meses, también, al sort () tuve que agregar la función de clasificación

 chosenMonths = { 2022: [0, 1, 2], 2018: [9, 10], 2017: [11], }; const writeOutMonth = function (monthArray, locale) { let monthNames = []; monthArray.forEach((mon) => { const date = new Date(); date.setMonth(mon); monthNames.push(date.toLocaleString(locale, { month: "long" })); }); return monthNames.join(", "); }; let result = Object.keys(chosenMonths) .reverse() .map( (year) => `<p1> ${year}: ${writeOutMonth( chosenMonths[year].sort((a, b) => a - b), "en-gb" )}</p>` ); console.log(result);
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