Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
En mecanografiado, el filtrado de la matriz no funciona.
filtervalue = { serviceLine:['cca','ga'] } this.inProgresDetailsData = [{serviceLine:'cca'}, { serviceLine:'cca'}, { serviceLine:'bca'}] this.hrResourceDetailsdata= this.inProgresDetailsData.filter(item => { for (let index = 0; index < filterValue.serviceLine.length; index++) { item.serviceLine == filterValue.serviceLine[index] } });`

this.hrResourceDetailsdata está vacío al filtrar

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

La función Array.prototype.filter ( documentación ) espera que return un valor booleano que decida si conservar o no el elemento actual.

Dado que originalmente no está devolviendo ningún valor, implícitamente devuelve undefined que, cuando se compara con un booleano, se resuelve en false , por lo tanto, todos los elementos de su matriz se descartan uno por uno, sin dejar ninguno.

Desea devolver el valor booleano para que esto funcione:

 this.hrResourceDetailsdata = this.inProgresDetailsData.filter(item => { for (let index = 0; index < filterValue.serviceLine.length; index++) { if (item.serviceLine == filterValue.serviceLine[index]) { return true; // return true if found, otherwise continue } } return false; // filter is never found in loop, fall back to false });

Además, puede usar Array.prototype.includes ( documentación ) para simplificar su verificación, el siguiente código hace exactamente lo mismo:

 this.hrResourceDetailsdata = this.inProgresDetailsData.filter(item => { // return true if `item.serviceLine` is inside `filterValue.serviceLine` return filterValue.serviceLine.includes(item.serviceLine); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear un conjunto a partir de filterValue.serviceLine y filtrar los elementos que están presentes en el conjunto.

 const filterValue = { serviceLine: ["cca", "ga"] }, inProgressDetailsData = [ { serviceLine: "cca" }, { serviceLine: "cca" }, { serviceLine: "bca" }, ], filterSet = new Set(filterValue.serviceLine), hrResourceDetailsdata = inProgressDetailsData.filter(({ serviceLine }) => filterSet.has(serviceLine) ); console.log(hrResourceDetailsdata);

Si desea aplicar varios filtros, entonces:

  • Cree un objeto que contenga filtros en forma de Set s.
  • Filtre elementos donde todos los filtros sean aplicables usando Array.prototype.every .

 const filterValue = { serviceLine: ["cca", "ga"], urgency: ["medium", "high"], }, filterSet = Object.fromEntries( Object.entries(filterValue).map(([k, v]) => [k, new Set(v)]) ), inProgressDetailsData = [ { id: 1, urgency: "low", serviceLine: "cca" }, { id: 2, urgency: "medium", serviceLine: "cca" }, { id: 3, urgency: "low", serviceLine: "bca" }, { id: 4, urgency: "high", serviceLine: "ga" }, { id: 5, urgency: "low", serviceLine: "abc" }, ], hrResourceDetailsdata = inProgressDetailsData.filter((data) => Object.entries(filterSet).every(([k, v]) => v.has(data[k])) ); console.log(hrResourceDetailsdata);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Código

 filtervalue = { serviceLine:['cca','ga'] }; this.inProgresDetailsData = [ { serviceLine:'cca'}, { serviceLine:'cca'}, { serviceLine:'bca'} ]; this.hrResourceDetailsdata = this.inProgresDetailsData.filter(item => { return filtervalue.serviceLine.includes(item.serviceLine) }); console.log(this.hrResourceDetailsdata)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda