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

99
Vistas
Filtrado js matriz de objetos en función de más de una propiedad

(usando reaccionar js) Estoy tratando de filtrar esta matriz:

 [ {gov:"A1", district:"1" , town:"t1", type:"cars factory"}, {gov:"A2", district:"2" , town:"t2", type:"farm"}, {gov:"A1", district:"1" , town:"t1", type:"milk factory"}, {gov:"A1", district:"4" , town:"t3", type:"milk factory"}, {gov:"A3", district:"3" , town:"t4", type:"medicine factory"}, {gov:"A4", district:"6" , town:"t5", type:"food"}, {gov:"A3", district:"7" , town:"t4", type:"milk factory"}, {gov:"A2", district:"2" , town:"t7", type:"construction"}, ]

digamos que esta matriz se llama Ubicaciones, necesito implementar 4 filtros, el primer filtro está filtrando usando gov (gobernaciones), el segundo filtro está usando distritos, el tercero usando ciudades, por último usando el tipo de industria. Pero qué pasa si ya elegí filtrar por distritos, entonces quiero filtrar el tipo de industria dentro de este distrito, necesito hacerlo dinámicamente; Por lo tanto, implementé 4 entradas seleccionadas (gobierno, distrito, ciudad, tipo), siempre podría haber filtrado la matriz original, pero esto devolverá, por ejemplo, las fábricas de leche en todos los gobiernos todo el tiempo, en lugar de un gobierno específico. Entonces, lo que necesito es filtrar en función de más de un atributo o propiedad y no solo escribiéndolo estáticamente

 newArray=Locations.filter( (e)=>{ return e.gov=='A1' && e.type='milk factory'})

esto lo resuelve, pero no todo el tiempo, ya que también podría elegir filtrar fábricas de leche en un distrito, ciudad o incluso en todo el país específico (en la matriz principal)

supongamos que

 gov \\is the value of the selection of governorates district \\is the value of the selection of districts town \\is the value of the selection of towns type \\is the value of the selection of the type

por cierto, estoy usando el mapa del folleto de reacción para mostrar estos valores en los marcadores, es por eso que necesito filtrar.

Así que pensé en publicarlo aquí, tal vez un alma amable me ayudaría a resolverlo. Gracias chicos.

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

0

Puede utilizar el siguiente enfoque. La idea es tener todos los filtros en un objeto coincidente y luego llamar a filterData cada vez que cambie el matchObj :)

 const data = [ {gov:"A1", district:"1" , town:"t1", type:"cars factory"}, {gov:"A2", district:"2" , town:"t2", type:"farm"}, {gov:"A1", district:"1" , town:"t1", type:"milk factory"}, {gov:"A1", district:"4" , town:"t3", type:"milk factory"}, {gov:"A3", district:"3" , town:"t4", type:"medicine factory"}, {gov:"A4", district:"6" , town:"t5", type:"food"}, {gov:"A3", district:"7" , town:"t4", type:"milk factory"}, {gov:"A2", district:"2" , town:"t7", type:"construction"}, ]; const filterData = (matchObj) => { const matchEntries = Object.entries(matchObj); return data.filter(item => { return matchEntries.every(([key, val]) => item[key] === val); }); }; // Tests: const matchObj1 = { gov:"A1" }; console.log(matchObj1, filterData(matchObj1)); const matchObj2 = { gov:"A1", type: "milk factory" }; console.log(matchObj2, filterData(matchObj2)); const matchObj3 = { gov:"A1", type: "milk factory", town: "t3" }; console.log(matchObj3, filterData(matchObj3));

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