Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
Análisis y verificación de la expresión de la condición en Javascript

Tengo una cadena que tiene condiciones variables, como esta:

(@IS_VERIFIED = 'Verdadero' O @CONFIRMATION_NEEDED != 'Verdadero') Y @REQUEST_LIMIT != '0'

Este es solo un ejemplo y hay un número desconocido de variables y casos.

  1. Cada variable comienza con @
  2. Hay OR y AND con paréntesis a veces
  3. Los valores siempre están entre comillas como 'xyz', por lo que todos pueden considerarse cadenas.
  4. Las condiciones siempre se verifican con = o !=

También tengo un mapa de javascript que contiene todas las variables como:

 const vars = { IS_VERIFIED: 'True', CONFIRMATION_NEEDED: 'True', REQUEST_LIMIT: '2' }

Lo que debo hacer es analizar la cadena de condiciones y verificar los valores usando el mapa de arriba para llegar a un resultado final, verdadero o falso. Se me ocurrieron algunas ideas, pero todas eran demasiado complicadas. ¿Hay algún método conocido y fácil para esto o tengo que crear algo desde cero?

Cualquier ayuda es apreciada, gracias.

Editar: después de lograr esto, el próximo objetivo para mí será mostrar qué variables rompen la condición, de alguna manera.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Precaución: solución de eval por delante, ¡tenga mucho cuidado al usar esto!

Simplemente modifique la cadena para que sea una expresión JS válida y luego use eval .

 const vars = { IS_VERIFIED: "True", CONFIRMATION_NEEDED: "True", REQUEST_LIMIT: "2", }; const str = `(@IS_VERIFIED = 'True' OR @CONFIRMATION_NEEDED != 'True') AND @REQUEST_LIMIT != '0'`; const evalStr = str .replaceAll("@", "vars.") .replaceAll("OR", "||") .replaceAll("AND", "&&") .replaceAll("!=", "!") .replaceAll("=", "===") .replaceAll("!", "!=="); const res = eval(evalStr); console.log(res);

about 4 years ago · Juan Pablo Isaza Report

0

Aquí hay un fragmento usando RegExp:

 let test = "@XYZ='True' AND @ABC='False'"; const regexp = /(@\w+)|(\'\w+\')/g; const regexpResult = [...test.match(regexp)] // Returns something like this: // ["@XYZ", "'True'", "@ABC", "'False'"] const vars = {}; for (let i = 0; i < regexpResult.length; i += 2) // We will be using two consecutive values at a time { let keyName = regexpResult[i].replace("@", ""); let keyValue = regexpResult[i+1].replaceAll("'", ""); vars[keyName] = keyValue; } // OUTPUT of "vars": // { // XYZ: "True", // ABC: "False" // }

Espero que esto le da una idea acerca de cómo resolver su problema.

about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!