• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

177
Views
Crear una variable para cada par de valores clave en JS

Tengo un problema...

Tengo una cadena ingresada por el usuario y se parece a esto

 let conditions = "id === 101 || name === 'Albert' && age !== 43"

También tengo una matriz de datos que también fue creada por el usuario en algún momento anterior. Los datos se almacenaron en forma de una matriz que se ve así, y el usuario ahora ha solicitado todas las entradas de datos que coinciden con las condiciones que ha dado.

 let data = [ {id:101, name:"Albert", age:63}, {id:102, name:"Einstein", age:53} ]

Probablemente puedas ver a dónde voy con esto. La matriz que se devolverá debería tener este aspecto.

 let returnedArray = [ {id:101, name:"Albert", age:63} ]

Ahora, mi primer pensamiento fue solo usar eval. Creando las variables con eval y for loop, verificando con eval y así sucesivamente.

Pero eso sería muy lento y parece redundante. Además, ya no podemos declarar variables con eval, y crear tantas variables globales sería muy perjudicial para mi proyecto.

Ni las condiciones ni la matriz de datos son estáticas. Las condiciones son ingresadas por el usuario y las matrices de datos no solo cambian constantemente, sino que también son creadas por el usuario.

¿Alguna sugerencia?

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Usar eval sería la forma más sencilla, no hay necesidad de crear un montón de variables globales. Podemos usar el filtro y desestructurar cada objeto en sus propiedades que coincidan con la lógica de la condición.

 let conditions = "id === 001 || name === 'Albert' && age !== 43" let data = [ {id:001, name:"Albert", age:63}, {id:002, name:"Einstein", age:53} ] let output = data.filter(({id, name, age}) => eval(conditions)); console.log(output);

Otra posibilidad es cambiar la estructura de las condiciones para que sea código en lugar de cadenas, eliminando los peligros de usar eval:

 let conditions = ({id, name, age}) => { return id === 001 || name === 'Albert' && age !== 43; }; let data = [ {id:001, name:"Albert", age:63}, {id:002, name:"Einstein", age:53} ] let output = data.filter(conditions); console.log(output);

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error