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

97
Vistas
La mejor manera de filtrar un conjunto de datos con javascript

La idea era consultar un conjunto de datos con parámetros de cadena de consulta. Solo quiero que los "registros" coincidan solo con lo que se consultó.

conjunto de datos

 { 1111: { Category: "Education" Role: "Analyst" } 2222: { Category: "Communications and Media" Role: "Analyst" } 3333: { Category: "Public Sector" Role: "Something else" } 4444: { Category: "Public Sector" Role: "Something else" } ... } [[Prototype]]: Object

Estoy enviando qString

 Category: (2) ['Communications and Media', 'Education'] Role: ['Analyst'] length: 0 [[Prototype]]: Array(0)

Me gustaría repetir eso y filtrar/reducir para que solo tenga registros que coincidan. Una especie de and en lugar de un or .

dataSet es un objeto de objetos. ¿Pensamientos? Gracias por adelantado.

 export const Filtered = (qStrings, dataSet) => { const filtered = []; Object.entries(qStrings).forEach(([field]) => { qStrings[field].forEach((value) => { filtered.push( ..._.filter(dataSet, (sess) => { if (sess[field] && sess[field].toString() === value.toString()) { return sess; } }) ); }); }); return _.uniq(filtered); };
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

caramba, lo descubrí con un colega que es mucho más inteligente que yo guiño Jess!

 export const Filtered = (qStrings, dataSet) => { let filtered = []; Object.entries(qStrings).forEach(([field], idx) => { let source = filtered; if (idx === 0) { source = dataSet; } filtered = _.filter(source, (sess) => { return sess[field] && sess[field].includes(qStrings[field]); }); }); return _.uniq(filtered); };

Ahora a limpiar esto.

about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro de si esto resuelve su problema exactamente, pero puede aplicar esta lógica sin mutación para una función mucho más limpia.

 export const matches = (qStrings, dataSet) => Object.entries(dataSet).reduce((acc, [key, value]) => Object.entries(value).every(([rKey, rValue]) => qStrings[rKey]?.includes(rValue)) ? { ...acc, [key]: value } : acc, {});

Esto devolverá los registros 1111 y 2222 porque coinciden con una de las categorías y el rol en qStrings.

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