首页 > 解决方案 > 将字符串查询转换为可执行语句

问题描述

如果我有这样的查询:

row.Average < 99 && row.Department === \"lfs\" && row.Fail === 1

以字符串形式提供...如何将其转换为可执行代码以在 if 语句中使用

前任:

if (row.Average < 99 && row.Department === \"lfs\" && row.Fail === 1){ /*doSomething*/ }

使用打字稿..我希望算法做到这一点..如果没有其他方法

我试过使用 eval() 但我被禁止 eval

并尝试做:

const Query = "row.Average < 99 && row.Department === \"lfs\" && row.Fail === 1";
const func = new Function("return " + Query + ";");
if (func()) {
   // code
}

并且代码只是停在 if 行 .. 并退出

标签: typescript

解决方案


我相信您可以只使用该eval函数来评估 TypeScript 中的 JavaScript 表达式:

const query = "row.Average < 99 && row.Department === \"lfs\" && row.Fail === 1";

const row = {Average: 98, Department: "lfs", Fail: 1}
console.log('query evaluates to ', eval(query));
if (eval(query)) {
    console.log('It was true')
} else {
    console.log('It was false')
}


推荐阅读