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

170
Vistas
Matriz JSON de objetos con propiedades "desde" y "hasta" y agrúpelo por período de tiempo

En caso de que las fechas en la matriz se crucen, la función debe combinarlas en un período, de lo contrario, los períodos deben estar separados

 var dates = [ { "from":"03/01/2021", "to":"03/05/2021" }, { "from":"03/08/2021", "to":"03/10/2021" }, { "from":"03/07/2021", "to":"03/20/2021" } ]; var item = dates; var index = 0; var out = document.querySelector('#test'); for(var i = 0; i < item.length; i++){ index++; var from_i = Date.parse(item[i].from); var to_i = Date.parse(item[i].to); var from_index = Date.parse(item[index].from); var to_index = Date.parse(item[index].to); if(from_index >= from_i && from_index <= to_i){ let updated_from = new Date(from_index); let update_to = new Date(to_index); console.log(updated_from); out.innerHTML += updated_from.toDateString() + update_to.toDateString() + "<br/>"; } }
 <div id="test"> </div>

Caso de jSON entrante: [ { "desde":"01/03/2021", "hasta":"06/03/2021" }, { "desde":"10/03/2021", "hasta":" 15/03/2021" }, { "desde":"20/03/2021", "hasta":"25/03/2021" } ]

Salida: 1-5 de marzo, 7-20 de marzo

¿Puede alguien ayudar? Aprender JS... un poco difícil para mí(

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

0

puedes hacer algo como esto

 const data = [ { "from":"03/01/2021", "to":"03/06/2021" }, { "from":"03/10/2021", "to":"03/15/2021" }, { "from":"03/20/2021", "to":"03/25/2021" } ] const monthToString = month => { const months = { '01': 'Jan', '02': 'Feb', '03': 'Mar', '04': 'Apr', '05': 'May', '06': 'Jun', '07': 'Jul', '08': 'Aug', '09': 'Sep', '10': 'Oct', '11': 'Nov', '12': 'Dec', } return months[month] || month } const result = Object.entries(data.reduce((res, {from, to}) => { const [monthFrom, day, year] = from.split('/') const [m, dayTo, y] = to.split('/') const month = monthToString(m) return { ...res, [month]: [...(res[month] || []), [day, dayTo]] } }, {})).map(([month, days]) => `${month} ${days.map(([from, to]) => `${parseInt(from)}-${parseInt(to)}`).join(', ')}`).join('\n') 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