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

101
Vistas
Filtrar dos matrices en función de los valores de otra matriz y también insertar los valores no disponibles en otra matriz

Tengo 2 matrices, una es "searchEachIndex" y otra es "datos".

Basado en la matriz "searchEachIndex", quiero filtrar la matriz "datos". es decir,

Aquí, en la matriz searchEachIndex, tengo 123 valores que coinciden con el identificador de empleo de la matriz de datos.

debe insertar el objeto en la matriz res aquí { id: 2, employeeId: 123 }, { id: 3, employeeId: 123 }, si ambos valores coinciden. de lo contrario, inserte los valores de searchEachIndex que no coinciden aquí 1234, 12 en otra matriz, es decir, matriz sin datos.

 let searchEachIndex = [123, 1234, 12] let data = [ { id: 1, employeId: 121 }, { id: 2, employeId: 123 }, { id: 3, employeId: 123 } ]; let res=[]; let noData = []; searchEachIndex.forEach(val => { data.map(item => { if(item.employeId === val) { res.push(item) } }) }) console.log('Both emp id and searchEachIndex value matched array', res); consolelog('Ids not found array', noData);

En realidad, necesito una respuesta como la siguiente: res: [{id: 2, employeeId: 123}, {id: 3, employeeId: 123}] y noData: [1234, 12]

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

0

Puede sustituir el .map con .forEach ya que no necesita que se devuelva una matriz transformada y solo está buscando un bucle for.

También puede mantener un indicador booleano que le permita saber si el val actual tenía una entrada correspondiente en la matriz de data . De esa manera, puede insertar (/ no insertar) en su matriz noData .

Desarrollando tu código:

 let searchEachIndex = [123, 1234, 12] let data = [ { id: 1, employeId: 121 }, { id: 2, employeId: 123 }, { id: 3, employeId: 123 } ]; let res=[]; let noData = []; searchEachIndex.forEach(val => { let found = false; data.forEach(item => { if(item.employeId === val) { found = true; res.push(item) } }) if(!found) noData.push(val); }) console.log('Both emp id and searchEachIndex value matched array', res); console.log('Ids not found array', noData);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede tomar un objeto para realizar un seguimiento de los valores utilizados y filtrar las matrices.

 const search = [123, 1234, 12], used = Object.fromEntries(search.map(k => [k, false])), data = [{ id: 1, employeId: 121 }, { id: 2, employeId: 123 }, { id: 3, employeId: 123 }], result = data.filter(({ employeId }) => { if (employeId in used) return used[employeId] = true; }), noData = search.filter(k => !used[k]); console.log(noData); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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