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

141
Vistas
Optimización de un conjunto de filtros exclusivos

Hola, recientemente me hicieron una pregunta muy interesante: dar un conjunto de datos

 data = [{name: "gem1", year: 2013, color:"yellow"}, {name: "gem2", year: 2013, color:"blue"}, {name: "gem3", year: 2021, color:"blue"}]

Y un conjunto de filtro

 filters = [{k: "color", v: "yellow"}]

Mostrar los datos excluidos por filtro como:

 getExclusive(data, filters) = [{name: "gem2", year: 2013, color:"blue"}, {name: "gem3", year: 2021, color:"blue"}]

Además, el adicional es que, la pregunta misma ha mencionado que un método muy crudo:

 filter.forEach(filter => {data = data.filter(datum => {return datum[filter.k] == filter.v})})

es DEMASIADO LENTO. Y el propósito es optimizarlo.

Tenga en cuenta que cada objeto en los datos tendrá un número desconocido de claves, y los nombres de las claves también son dinámicos, por ejemplo: obj1 solo puede tener {lastName: "last", firstName: "first"} y obj2 solo puede tener {model : "Jeep", año: 2021, color: "blanco"})

Pensé que la razón por la que es lento es porque la gran O va a F * D

Y quiero convertir los filtros en Map<string, Set> para que para cada dato se vea la ubicación en O(1).

Pero luego descubrí que estaba equivocado. Porque de esta manera necesita pasar por cada clave en cada obj para ver si golpea un filtro. Por lo tanto, se convierte en F + D * <avg key numbers in data> , ¿lo que podría ser aún peor si el número clave es tan grande?

Entonces, ¿hay alguna otra forma de optimizarlo absolutamente, o tal vez esta es solo una pregunta abierta sin una respuesta definitiva?

Tenga en cuenta que esta pregunta está en JavaScript. Así que no sé si se consideraría alguna API interna.

about 4 years ago · Juan Pablo Isaza
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