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

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

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 Relatório

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 Relatório

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 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