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

83
Views
Función de filtro JS múltiples condiciones

Esto podría ser un duplicado, pero parece que no puedo encontrar una pregunta de stackoverflow con mi pregunta exacta. Estoy mostrando una tabla de datos en la interfaz y permito que el usuario filtre por múltiples variables opcionales. Entonces, digamos que mis variables de datos son detalles de usuario en este formato:

 [ { firstName = 'bob', middleName = 'bruh', lastName = 'bub' }, . . . { firstName = 'sam', middleName = 'marley', lastName = 'jackson' } ]

Ahora estoy permitiendo a los usuarios filtrar por nombre, segundo nombre y apellido. Pero también se les permite filtrar usando solo una variable, o una combinación de cualquiera de las tres.

El enfoque ingenuo que estoy usando ahora es tener 7 declaraciones if que filtran la matriz según la entrada del usuario:

asi que

 let filterByFirstName = this.firstNameQuery !== null; let filterByMiddleName = this.middleNameQuery !== null; let filterByLastName = this.lastNameQuery !== null; if(filterByFirstName && !filterByMiddleName && !filterByLastName) //filter the array only by first name else if(filterByFirstName && filterByMiddleName && !filterByLastName) // filter array by first and middle name . . . else if(filterByFirstName && filterByMiddleName && filterByLastName) //filter array by first, middle and last name.

Entonces, algorítmicamente es lo suficientemente eficiente, pero no tanto por la limpieza del código, ya que agregaré más y más variables para filtrar.

Intenté crear solo una declaración de filtro que filtrará según las variables proporcionadas, pero tengo problemas para codificarla.

 let filterByFirstName = this.firstNameQuery !== null; let filterByMiddleName = this.middleNameQuery !== null; let filterByLastName = this.lastNameQuery !== null; this.displayArray = this.userArray.filter( user => user.firstName === (filterByFirstName ? this.firstNameQuery : 'any String') && user.middleName === (filterByMiddleName ? this.middleNameQuery : 'any String') && user.lastName === (filterByLastName ? this.lastNameQuery : 'any String') );

Entonces, esencialmente, lo que necesito es un comodín o el equivalente de cualquier cadena para poner en la función de filtro, si esto es posible. Gracias por adelantado :)

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Tal vez algo como:

 let filters = {firstName: 'John', middleName: 'Foo', lastName: null} let data = [{firstName: 'John', middleName: 'Foo', lastName: 'Doe'}] console.log(data.filter((item) => { for (const [key, value] of Object.entries(filters)) { if (value) return item[key] === value } }))

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