javascript - 如何在Javascript中评估格式为(AND,true,false,(OR,true,false,false,(AND,false,true)))的字符串?
问题描述
例如,我有格式(AND, true, false, (OR, true, false, false, (AND, false, true)))
的字符串,JavaScript 中有没有一种方法可以将这个字符串评估为布尔值?
expression 1: (AND, true, false) => false
expression 2: (AND, true, (OR, false, true)) will evaluate to => (AND, true, true) => true
像这样,我们可以有一个带有嵌套条件的表达式。
解决这个问题的任何解决方案都将是一个巨大的帮助。提前致谢
解决方案
您可以替换某些部分以获得可评估的字符串。
function evaluate(string) {
const
AND = (...args) => args.every(Boolean),
OR = (...args) => args.some(Boolean);
return eval(string.replace(/\(([^,]+),\s*/g, '$1('));
}
console.log(evaluate('(AND, true, true)'));
console.log(evaluate('(AND, true, false, (OR, true, false, false, (AND, false, true)))'));
推荐阅读
- android - android构建所需的最少文件
- c++ - 将 `std::valarray` 集成到数据结构中
- html - 在浏览器调整大小时,大图像不会缩小到 CSS 网格容器
- angular - 7 - 8 条动态路线
- postgresql - 为 Postgres 安装 SSL 的 SSH 密钥
- javascript - 如何计算所有存储的 cookie?
- excel - 如何将列单元格提取为单张图片?
- javascript - 如何使用 express-winston 在 msg 对象中记录请求正文 (req.body)?
- c++ - 带功能支持的调车场算法
- c# - Azure Devops Visual Studio 测试任务无法发现具有 TestCaseSource 属性的 Nunit 测试