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

238
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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