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

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

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

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

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