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

84
Views
¿Cómo filtrar objetos con múltiples condiciones opcionales?

Tengo esta matriz de objetos:

 [ {name: "John", surname: "Doe", car: "BWM"}, {name: "Louis", surname: "Vuitton", car: "MERCEDES"}, {name: "Bob", surname: "Ross", car: "FORD"}, {name: "Dylan", surname: "James", car: "FERRARI"}, {name: "Damien", surname: "Rivers", car: "JAGUAR"}, ]

y tengo este codigo

 return this._object.filter(object => object.car === params1 && object.car === params2 && object.car=== params3)

los params pueden ser de cualquier marca de automóvil, pero son opcionales además de params1, el usuario puede proporcionar solo params1 y dejar los otros dos sin definir.

El usuario selecciona los parámetros en una opción html seleccionada, puede elegir hasta 3 marcas de automóviles, por lo que 3 parámetros y los paso como parámetros de URL y paso estos parámetros a mi función

Quiero hacer algo como en una línea: si existen params2 y params3, no cambie el fragmento de código, si no existen, solo haga el filtro en params1

Ejemplo 1: if params1 = BMW and params 2-3 = undefined , devolvería este objeto {name: "John", surname: "Doe", car: "BWM"}

Ejemplo 2: if params1 = BMW, params2 = MERCEDES devolvería este resultado:

 {name: "John", surname: "Doe", car: "BWM"} {name: "Louis", surname: "Vuitton", car: "MERCEDES"},`

Mismo concepto con params 3 == FERRARI

No puedo ver cómo puedo hacer eso con unas pocas líneas/una línea, además de hacer declaraciones if en todas partes

Gracias !

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

0

puedes hacer algo como esto

 const filterData = (data, ...params) => data.filter(d => params.includes(d.car)) const data = [{name: "John", surname: "Doe", car: "BMW"}, {name: "Louis", surname: "Vuitton", car: "MERCEDES"}, {name: "Bob", surname: "Ross", car: "FORD"}, {name: "Dylan", surname: "James", car: "FERRARI"}, {name: "Damien", surname: "Rivers", car: "JAGUAR"},] console.log(filterData(data, 'BMW')) console.log(filterData(data, 'BMW', 'MERCEDES'))

about 4 years ago · Juan Pablo Isaza Report

0

Puede hacer que el código sea aún más flexible. En lugar de pasar 3 parámetros diferentes, pase una matriz como la siguiente.

 let cars = ["BMW", "MERCEDES"];

ahora puede verificarlo usando el método include de javascript.

 return this._object.filter(object => cars.includes(object.car))
about 4 years ago · Juan Pablo Isaza Report

0

Mediante el uso de Array.prototype.includes() puede comparar varias expresiones de destino. Devolverá true si el argumento es igual a al menos un elemento de la matriz.

En un args.map() inicial, me aseguro de que los valores de entrada estén en mayúsculas.

 const data=[{name: "John", surname: "Doe", car: "BMW"}, {name: "Louis", surname: "Vuitton", car: "MERCEDES"}, {name: "Bob", surname: "Ross", car: "FORD"}, {name: "Dylan", surname: "James", car: "FERRARI"}, {name: "Damien", surname: "Rivers", car: "JAGUAR"}]; function filt(...args){ args=args.map(a=>a.toUpperCase()); return data.filter(d=> args.includes(d.car)) } console.log(filt("BMW","Mercedes")); console.log(filt("jaguar"))

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!