Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

108
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda