2016-08-16 73 views
3

我有任务为复杂和嵌套的JSON编写过滤器。为此,我需要评估用户在输入字段中输入的布尔表达式。 对于这个问题的缘故可以说,我们已经得到了以下输入:在Javascript中将复杂的字符串表达式解析为布尔值

(Key1 = "foo" || key2 = 2 && key3 = "bar") && key4 = 7 

我设法写一个函数来各的keyValue,对评估为无论是“真”或“假”,并在更换他们字符串: 如:

(True || False && True) && True 

现在我想,解析字符串的布尔表达式。有什么“简单”的方法(内置函数,插件)的Javascript可以解析这个字符串?

+0

@BeyelerStudios'&'是一个按位与运算符。 – martin

+0

当然它&&感谢您的提示! 我改变了它的问题 – GuyWithCookies

+0

它从来不是布尔表达式我刚刚创建了一个正则表达式来获取keyVal对并在JSON中搜索它们。该函数返回true或false,并将其写回到String中。这只是我目前的做法。我愿意接受任何更好的主意! – GuyWithCookies

回答

3

有其通常不建议使用,但也许在你的情况下,它是适合eval()。详情参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

你可以写:

eval("(true || false && true) && true") // Returns: 1 

注意,我不得不重写Truetrue因为True没有一个公认的布尔表达式。

然而,作用域应用于eval(),所以我也可以这样写:

var True = 1; 
var False = 0; 
eval("(True || False && True) && True"); // Returns: 1 

这可能为你工作,如果你事先知道我想的变量。否则,也许看看https://silentmatt.com/javascript-expression-evaluator/http://jsep.from.so/