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

49
Visualizações
Matriz de cadena que parece una fecha

Si tengo una matriz como: let array = ["Friday, 11 February","Tuesday, 10 February","Friday, 04 March", "Thursday, 17 February", "Today", "Monday, 9 February"]; . Lo que trato de hacer es encontrar la fecha más cercana a hoy o la más pequeña y no quiero tomar "Hoy". Hasta ahora probé:

 let array = ["Friday, 11 February","Tuesday, 10 February","Friday, 04 March", "Thursday, 17 February", "Today", "Monday, 9 February"]; array = array.map(el => el.split(", ").slice(1).join()).filter(el =>el) let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; let closest = ""; for(let i = 0; i < array.length; i++){ for(let j = 1; j < array.length; j++){ let numberOne = array[i].match(/\d+/)[0]; let monthOne = array[i].match(/\b[a-zA-Z]+\b/g)[0]; let numberTwo = array[j].match(/\d+/)[0]; let monthTwo = array[j].match(/\b[a-zA-Z]+\b/g)[0]; if(+(numberOne) < +(numberTwo) && months.indexOf(monthOne) <= months.indexOf(monthTwo)){ closest = array[i] } } } console.log(closest)

Todo está bien, pero quiero saber si puedo transformarme en una Fecha y ordenar por fecha. ¿Alguien tiene una solución a esto o una forma más limpia de encontrar la fecha más cercana? La matriz es dinámica y hasta ahora no encontré ninguna fecha anterior a hoy y tomar esa. ¡Gracias!

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

0

En primer lugar, aquí hay un problema: el año no está definido, así que aclaremos que nos referimos al año actual al transformar todas las fechas en Fecha real:

 const now = new Date(); array.map(el => new Date(`${el} ${now.getFullYear()}`);

Entonces podemos calcular las diferencias a partir de ahora (en milisegundos):

 array.map(el => new Date(`${el} ${now.getFullYear()}`) - now.getTime());

Envolvámoslos en Math.abs para encontrar fácilmente cuál es el más pequeño usando Math.min() :

 const offsets = array.map(el => Math.abs(new Date(`${el} ${now.getFullYear()}`) - now.getTime())); const closestIndex = offsets.findIndex(el => el === Math.min(...offsets));

closestIndex - índice de la fecha con el desplazamiento más pequeño que significa "más cercano a ahora".

Código completo (excluyendo "Hoy" desde el principio):

 const array = ["Friday, 11 February", "Tuesday, 10 February", "Friday, 04 March", "Thursday, 17 February", "Today", "Monday, 9 February"].filter(el => el !== 'Today'); const now = new Date(); const offsets = array.map(el => Math.abs(new Date(`${el} ${now.getFullYear()}`) - now.getTime())); const closestIndex = offsets.findIndex(el => el === Math.min(...offsets)); console.log(array[closestIndex]);

about 4 years ago · Juan Pablo Isaza Relatório

0

Pensé en la posibilidad de que algunas fechas pudieran ser el próximo año. El mejor ejemplo a fines de diciembre y principios de enero y escribo el siguiente código, que espero pueda ayudar a alguien.

 let array = [ "Tuesday, 03 January", "Thursday, 05 January", "Thursday, 29 December", "Monday, 02 January", "Friday, 30 December" ]; let now = new Date(); var datesArray = array.map((el) => el + " " + now.getFullYear()); datesArray = datesArray.map((el) => new Date(el)); datesArray = datesArray.map(el => { if (el.getTime() < now.getTime()) { return el = el.setFullYear(el.getFullYear() + 1) }else{ return el = el.setFullYear(el.getFullYear()) } }) const closestIndex = datesArray.findIndex(el => el === Math.min(...datesArray)); console.log(array[closestIndex])
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