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

230
Vistas
¿Cómo encontrar una matriz de objetos si el valor actual es más cercano a la fecha actual?

Tengo un archivo JSON que contiene el valor del año en una cadena en edu_end_year . Quiero elegir uno si los datos son más de uno en el mismo emp_id cuando el edu_end_year es el más cercano a la fecha ahora.

aquí están los datos:

 educations = [ { "emp_id": 1, "edu_degree": "SMA", "edu_end_year": 2011 }, { "emp_id": 1, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2016 } ]

Aquí está el resultado de lo que esperaba:

 [ { "emp_id": 1, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2016 } ]

Estaba intentando usar filter() y find() , pero aún no tuve suerte.

avíseme si necesita más información para resolver ese problema si aún no es suficiente.

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

0

No sé si este código es eficiente para manejar big data o no, pero eso es un trabajo para arreglar si emp_id es el mismo.

sugerencia use este código después de la paginación

 educations = [ { "emp_id": 1, "edu_degree": "SMA", "edu_end_year": 2011 }, { "emp_id": 1, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2016 } ] for (let i = educations.length -1; i > 0; i--){ if(educations[i].emp_id === educations[i-1].emp_id){ educations.splice(i, i) } } console.log(educations)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes usar Array.reducir

  • use reduce() para recorrer cada elemento
  • Verifique que su matriz final (acc) tenga elementos al marcar emp_id en la lista
  • Si es el primer elemento, insértelo en
  • Si existe el mismo emp_id , verifique qué año es mayor
  • Reemplace el registro del año más nuevo en la matriz final

 educations = [ { "emp_id": 1, "edu_degree": "SMA", "edu_end_year": 2011 }, { "emp_id": 1, "edu_degree": "S1", "edu_end_year": 2016 }, { "emp_id": 2, "edu_degree": "S1", "edu_end_year": 2015 }, { "emp_id": 2, "edu_degree": "S13", "edu_end_year": 2017 }, { "emp_id": 2, "edu_degree": "S14", "edu_end_year": 2016 } ] finalArr = educations.reduce((acc, prev) => { if(!acc.find(x=>x.emp_id === prev.emp_id)){ acc.push(prev) } else{ let record = acc.find(x=>x.emp_id === prev.emp_id); if(prev.edu_end_year >= record.edu_end_year){ let index = acc.findIndex(x=>x.emp_id === prev.emp_id); acc[index] = prev; } } return acc; }, []); console.log(finalArr)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto debería hacerlo:

 const educations = [{"emp_id": 1,"edu_degree": "SMA","edu_end_year": 2011}, {"emp_id": 1,"edu_degree": "S1","edu_end_year": 2016}, {"emp_id": 3,"edu_degree": "S3","edu_end_year": 2014}, {"emp_id": 2,"edu_degree": "S1","edu_end_year": 2016}]; const res=Object.values(educations.reduce((a,c)=>{ if(!a[c.emp_id]||a[c.emp_id].edu_end_year<c.edu_end_year) a[c.emp_id]=c; return a; },{})); console.log(res);

Entendí mal su pregunta al principio y cambié mi respuesta en consecuencia ahora. El fragmento anterior usa un único bucle .reduce() para filtrar los elementos más recientes para cada .emp_id .

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