首页 > 解决方案 > 如何在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

像这样,我们可以有一个带有嵌套条件的表达式。

解决这个问题的任何解决方案都将是一个巨大的帮助。提前致谢

标签: javascriptlogical-operatorsboolean-expressionexpression-evaluation

解决方案


您可以替换某些部分以获得可评估的字符串。

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)))'));


推荐阅读