Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
¿Cómo filtrar una matriz de objetos por otro objeto como clave en JS?

Tengo una variedad de objetos.

 let allData = [ {title:"Adams",age:24,gender:"male"}, {title:"Baker",age:24,gender:"female"}, {title:"Clark",age:23,gender:"male"}, {title:"Davis",age:23,gender:"female"}, {title:"Ghosh",age:23,gender:"female"}, {title:"Adams",age:23,gender:"male"}, {title:"Irwin",age:25,gender:"male"}, ]

y lista de filtros en un objeto como este

 let filters = { title:{filterTerm:[]}, gender:{filterTerm:["male"]}, age:{filterTerm:[23]} }

Quiero aplicar varios filtros encima de todos los datos. Intenté usar Array.some con Array.includes, pero no funciona cuando con varios elementos de filtros a continuación está mi código.

 const getFilterRows = (rows, filters) => { let filterCols = Object.keys(filters) if (filterCols.length == 0) { return rows } else { let filteredR = rows.filter(i => { return filterCols.some((s) => { return filters[s].filterTerm.includes(i[s]) }) }); return filteredR } }
 let filterd = getFilterRows(allData,filters)

Rendimiento esperado

 [ {title:"Clark",age:23,gender:"male"}, {title:"Adams",age:23,gender:"male"}, ]
about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Puede asignar cada clave de los filters y filtrar todos los datos en filterTerm allData el elemento que se busca, ignorando el filtro si filterTerm está vacío. El siguiente ejemplo también le permitiría agregar más elementos a filterTerm si es necesario.

 let allData = [ {title:"Adams",age:24,gender:"male"}, {title:"Baker",age:24,gender:"female"}, {title:"Clark",age:23,gender:"male"}, {title:"Davis",age:23,gender:"female"}, {title:"Ghosh",age:23,gender:"female"}, {title:"Adams",age:23,gender:"male"}, {title:"Irwin",age:25,gender:"male"} ] let filters = { title:{filterTerm:[]}, gender:{filterTerm:["male"]}, age:{filterTerm:[23]}, } const getFilterRows = (rows, filters) => { return rows.filter(row => ( Object.keys(filters) .map(key => filters[key].filterTerm.length ? filters[key].filterTerm.includes(row[key]) : true) .every(Boolean)) ) } let filtered = getFilterRows(allData,filters) console.log(filtered)

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!