2016-08-16 14 views
3

複雑なネストJSONのフィルタを作成するタスクがあります。これを行うには、ユーザーが入力フィールドに入力するブール式を評価する必要があります。私はどちらか「true」または「false」に各keyValueのペアを評価する関数を記述するために管理し、それらを置き換えJavascriptで複雑な文字列式をブール値に解析する

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

:質問さのために たちは、以下の入力を持って言うことができます文字列: 例:

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

今、私はブール式には、この文字列を解析します。この文字列を解析できるJavascriptのための「簡単な」方法(関数、プラグインで構築されていますか)はありますか?

+0

@BeyelerStudios '&'はビット単位のAND演算子です。 – martin

+0

もちろん、ヒントのための&&ありがとう! 質問で変更しました – GuyWithCookies

+0

決してブール式ではありません私は、keyValペアを取得してJSONで検索するために正規表現を作成しました。この関数はtrueまたはfalseを返し、文字列に書き戻しました。これは私の現在のアプローチでした。私はどんな良いアイデアにもオープンです! – GuyWithCookies

答えて

3

通常使用することをお勧めしませんが、多分あなたの場合には、それが適していますされeval()があります。詳細については、を参照してください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

あなたが書くことができます:Trueがブール式として認識されないので、私はtrueTrueを書き換えなければならなかったこと

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

注意、。

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

あなたは私が推測事前に変数を知っている場合、これはあなたのために働くことができます:

ただし、スコープはので、私も書くことができeval()に適用されます。それ以外の場合は、https://silentmatt.com/javascript-expression-evaluator/またはhttp://jsep.from.so/をご覧ください。

関連する問題