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

123
Vistas
Cómo crear un método de filtro encadenado personalizado con una nueva función

Situación

Tengo una tabla y para cada columna, el usuario puede establecer varios filtros, como:

ID is greater then 10 && lower then 40 && is equal to 22

Datos

Paso los filtros aplicados con el operador correcto y el valor de verificación, así:

 const filters = [ { value: 10, operator: '<' }, { value: 40, operator: '>' }, { value: 22, operator: '==' }, ]

Los datos de una columna podrían verse así:

 const columnData = [10,22,3,1,14,15,69,22,...]

Reclutar

Quiero minimizar el filtrado y comparar los valores de datos con todos los filtros aplicados solo una vez. Como no sé qué está buscando el usuario, quiero crear un método de filtro encadenado personalizado.

Con el new Function , pensé que sería un caso de uso perfecto para una cadena de filtro encadenada, como:

colData < 10 && colData > 40 && colData == 22

Meta

 const colVal = 22 const testFn = new Function('colData', 'return colData > 10 && colData < 40 && colData == 22' // <- should be a custom string ) console.log(testFn(colVal)) // true;

Ahora estoy atascado para crear una cadena personalizada que represente mis filtros.

Pensé que podría crear la cadena en primer lugar, usarla en el método testFn y comparar cada valor sin problemas.

Intenté lo siguiente:

 const colVal = 22 const y = (colData) => `${colData}` + ' > 10 && ' + `${colData}` + ' < 40 && ' + `${colData}` + ' == 22' const testFn = new Function('y', 'colVal', 'return y(colVal)' ) console.log(testFn(y, colVal )); // 22 > 10 && 22 < 40 && 22 == 22

¿Tiene alguna idea para implementar una cadena personalizada en un new Function ?

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

0

Puede crear su cadena de filtro condicional en función de la matriz de filtros utilizando los métodos map y join , luego pase esa cadena a la cadena del cuerpo de la Function principal al constructor de funciones.

 const filters = [{ value: 10, operator: '>' }, { value: 40, operator: '<' }, { value: 22, operator: '==' }, ] const columnData = [10, 22, 3, 1, 14, 15, 69, 22] const filterString = filters.map(({ value, operator }, i) => `el ${operator} ${value}`).join(' && ') const fnString = `return data.filter(el => ${filterString})` const fn = new Function('data', 'filters', fnString) console.log(fnString) console.log(fn(columnData, filters))

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