Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AND/OR中将布尔逻辑一次转换为2子句_Javascript_Java_Sql_Arrays_Transformation - Fatal编程技术网

Javascript 在AND/OR中将布尔逻辑一次转换为2子句

Javascript 在AND/OR中将布尔逻辑一次转换为2子句,javascript,java,sql,arrays,transformation,Javascript,Java,Sql,Arrays,Transformation,为这个尴尬的标题道歉,我想不出更好的了 我有布尔逻辑字符串,比如 和( 列。包含。5, 列。包含。6, 或( 列。相等。1, 列。相等。2, 列。相等。3, 及( 列。包含。7, 列。包含。8 ) ), 列。包含。4 ) 问题在于解析此语句的脚本一次只接受AND/OR中的两个子句。i、 e.和(条件1,条件2),但不是和(条件1,条件2,条件3)。这意味着任何具有2个以上条件的内容都需要进行适当的转换,以便只传入两个条件。我怎么能这样做?(正在努力修复缺陷,但需要临时解决方案) 我当前的想法是将

为这个尴尬的标题道歉,我想不出更好的了

我有布尔逻辑字符串,比如

和(
列。包含。5,
列。包含。6,
或(
列。相等。1,
列。相等。2,
列。相等。3,
及(
列。包含。7,
列。包含。8
)
),
列。包含。4
)

问题在于解析此语句的脚本一次只接受AND/OR中的两个子句。i、 e.和(条件1,条件2),但不是和(条件1,条件2,条件3)。这意味着任何具有2个以上条件的内容都需要进行适当的转换,以便只传入两个条件。我怎么能这样做?(正在努力修复缺陷,但需要临时解决方案)

我当前的想法是将该字符串转换为一个数组,第0个元素是运算符(
[“AND”,column.contains.5,column.contains6,[“OR”,“column.equal.1],[column.equal.2],[column.equal.3],“AND”,column.contains.7,column.contains.8],[column.contains.4]
)。然后,每当一个数组有3个以上的元素时,我就会递归地分解条件2到n,直到它总是2个子句。这似乎正确吗

还是有更好的方法?

我给出的输入的期望输出是(保留逻辑):

和(
列。包含。5,
及(
列。包含。6,
及(
或(
列。相等。1,
或(
列。相等。2,
或(
列。相等。3,
及(
列。包含。7,
列。包含。8
)
)
)
),
列。包含。4
)
)
)

您的方法可能是最好的。我唯一能想到的另一种方法是创建一个新的解析器,但这似乎是不可能的。您的方法可能是最好的。我唯一能想到的另一种方法是创建一个新的解析器,但这似乎是不可能的。