【发布时间】:2021-02-02 04:32:08
【问题描述】:
我有这个深度嵌套的数组,其中包含一组节点,我想创建类似的查询字符串
(FULL_NAME="x" AND NOT(AGE="30" OR AGE="40" AND (ADDRESS="y" AND STREET="z" AND NOT(USER="admin" OR USER="super admin"))) AND TITLE="Developer")
我拥有的json数据是,
- 接收用户输入的节点列表
- 处理多节点加入的算子
- 如果用户选择NOT,包含它的主容器将没有节点,所以它看起来像这样
NOT (X="y" AND Y="x") - 第一个垂直运算符是子节点的连接器,如果我们选择使用
NOT运算符,则此容器将成为一个组,并且其中将包含另一个容器,其中包含AND或OR - 用户可以在
NOT、AND、OR之间进行选择,但如果他们尝试对它们进行分组,则不能使用相同的运算符,这仅适用于NOT运算符。
我的数组看起来像:
[
{
"uuid":"b7f0ddf4-0290-4c7e-bb59-771aa46bc850",
"operator":"AND",
"isMain":true,
"nodes":[
{
"values":{
"fieldValue":{
"FieldName":"ORIGINAL_FILE_NAME",
},
"operator":"=",
"primaryOperandValue":"new"
},
"uuid":"779fb920-eb7f-4441-9b5a-886c7a41e271"
}
],
"children":[
{
"uuid":"7467b8c9-212e-41b8-ac02-04296b95c88c",
"operator":"NOT",
"nodes":[],
"children":[
{
"operator":"AND",
"uuid":"eaad7c96-0e8f-466b-a255-1075a8e68647",
"nodes":[
{
"uuid":"f6057d1b-56d7-4ee6-ac5b-332fbd180fd4",
"values":{
"fieldValue":{
"FieldName":"CONTROL_NUMBER",
},
"operator":"BETWEEN",
"primaryOperandValue":"x",
"secondaryOperandValue":"y"
}
}
],
"children":[
{
"uuid":"95fd2b08-cc49-498a-bd9f-c50dc55bc39f",
"operator":"NOT",
"nodes":[],
"children":[
{
"uuid":"7637ecc1-28b4-47d7-a602-cd172fb5e269",
"operator":"OR",
"nodes":[
{
"uuid":"0598a915-5818-4c6e-a3d5-6724f893871a",
"values":{
"fieldValue":{
"FieldName":"CONTROL_NUMBER",
},
"operator":" > ",
"primaryOperandValue":"30",
"secondaryOperandValue":null
}
}
],
"children":[]
}
]
}
]
}
]
},
{
"uuid":"78218b5b-b18b-4418-beed-b3418361785f",
"operator":"OR",
"nodes":[
{
"uuid":"ec956407-4fc6-46df-baa7-d2233711dc20",
"values":{
"fieldValue":{
"FieldName":"EMAIL_ANY_ADDRESS",
},
"operator":"ENDS_WITH",
"primaryOperandValue":"log",
"secondaryOperandValue":null
}
},
{
"values":{
"fieldValue":{
"FieldName":"EMAIL_ANY_ADDRESS",
},
"operator":"BEGINS_WITH",
"primaryOperandValue":"log",
"secondaryOperandValue":null
},
"uuid":"6724e913-6e98-47b6-b6af-972a20f0173d"
}
],
"children":[
]
}
]
}
]
我已经尝试了几种方法来从中生成字符串,但我无法对深度嵌套的节点进行分组。
谢谢。
【问题讨论】:
-
请从给定的数据中添加想要的字符串。
'BETWEEN'会发生什么? -
@NinaScholz 我们有这个
BETWEEN "x" AND "y"字符串要在操作员之间打印。
标签: javascript json angular typescript multidimensional-array