typescript - 将字符串查询转换为可执行语句
问题描述
如果我有这样的查询:
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 行 .. 并退出
解决方案
我相信您可以只使用该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')
}
推荐阅读
- c# - 尝试使用 C#/ASP.NET 将数据从电子表格迁移到数据库
- mapbox - mapbox moveend 仅在点击时触发
- python - 请求的运行时 (python-) 不适用于此堆栈 (heroku-20)
- c# - 无法仅在 uniy 中为 Z 轴制作动画
- android - 无法在初始化程序中访问实例成员“setState”
- asp.net-core - 如何使用多个选定值更新行 SelectList
- sql - 将值插入到只有 1 列的表中
- google-sheets-api - Google.Apis.Requests.RequestError 未找到请求的实体。[404]
- python - 将列表的每个元素与没有循环的列表连接起来
- amazon-web-services - AttributeDefinitions 和 KeySchemas 中的属性集必须在 Resources/DynamoDB/Properties 匹配