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

244
Visualizações
¿Cómo puedo filtrar () un valor entre varias columnas de mi JSON? JavaScript

Me enfrento a un problema y no entiendo cómo puedo resolverlo.

Tengo un servicio donde devuelvo el siguiente JSON:

 { "data": [ { "data": 179, "data_form": "Finished - Form Covid-19 Test 1", "form": 144, "user": 1, "status": "Finished" }, { "data": 176, "data_form": "In process - Form Covid-19 Test 2", "form": 144, "user": 1, "status": "Finished" }, { "data": 177, "data_form": "Finished - Form Covid-19 Test 3", "form": 144, "user": 1, "status": "In process" }, { "data": 178, "data_form": "Finished - Form Covid-19 Test 4", "form": 144, "user": 1, "status": "In process" } ] }

Estoy usando un PIPE donde le envío mi matriz, el valor que quiero filtrar y la columna donde está ese valor:

 <ion-list *ngFor="let form of forms | filter: searchValue: ['status','data_form','data']"> <app-form-user [form]="form"> </app-form-user> </ion-list>

Funciona si indico la columna:

 return array.filter( //It works item=> item[column[0]].toLowerCase().includes( text ) );

La idea es buscar el valor en todas las columnas que le indicas al pipe, yo probé lo siguiente:

1.

 return array.filter( item=> item[column.forEach((data) => found = data )].toLowerCase().includes( text ); );
 return array.filter( item=>Object.keys(column).every(key => item[key] == column[key] ) );
 return array.filter( item=> column.forEach((data) => item[data].toLowerCase().includes( text )) );

Espero que me puedas ayudar, gracias.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Funciona sin necesidad de pasar la columna, busca todas las columnas disponibles.

Código de una línea

Este filtro pasa por cada clave que tiene para verificar los valores y devolver el resultado.

Explicación detallada:

 1) Base is the object you posted and assuming you want to filter the "data" 2) First filter goes thru all the elements in the array 3) second filter goes thru all the keys in the object which is element in the array 4) Checking if the column has the data 5) returns the array of elements if matched
 const text = 'Test 2'; return array.filter(v=> Object.keys(v).filter(key=> v[key].toString().toLowerCase().includes(text.toString().toLowerCase())).length > 0)

Y el resultado es:

Resultado

about 4 years ago · Juan Pablo Isaza Relatório

0

Usaré .map() para revisar cada clave de cada elemento, y decidir si encontró los valores específicos o no, y devolverlo en el nivel de filtro

 return array.filter(item => { let found = false; Object.keys(item).map(x => { found = found || item[x].toLowerCase().includes( text ); }); return found; });
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