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

280
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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