当前位置: 首页 > 知识库问答 >
问题:

javascript - 如果将一个类规则数据转成一个文字型描述?

周伟泽
2023-10-30

我有这样一段数据:

{        type: 'root',        key: '8120abb2-d5c8-4843-8170-0ac1fc07a6c1',        conditionValue: 'and',        conditionLabel: '并且',        children: [          {            type: 'group',            label: '规则组1',            key: '143c2a99-8316-45aa-8bdf-6c5aea09ca56',            conditionValue: 'or',            conditionLabel: '或者',            children: [              {                type: 'dimension',                label: '维度1',                key: 'fa155535-f339-44d6-b368-32ac7f10b83f',                conditionValue: 'or',                conditionLabel: '或者',                children: [                  {                    type: 'rule',                    label: '规则1',                    key: '08979aee-221f-49a4-991c-39306317ecdc',                    dimensionLabel: '职位',                    dimensionValue: '1',                    conditionLabel: '等于',                    conditionValue: '=',                    inputLable: '1',                    inputValue: '1',                  },                  {                    type: 'rule',                    label: '规则-2',                    key: '78aa74dc-4982-4a9f-93c4-5a16fdf0ea76',                    dimensionLabel: '职位',                    dimensionValue: '1',                    conditionLabel: '等于',                    conditionValue: '=',                    inputLable: '2',                    inputValue: '2',                  },                  {                    type: 'rule',                    label: '规则-3',                    key: '8c760cf5-e042-4b33-ab08-c42282d74ed6',                    dimensionLabel: '职位',                    dimensionValue: '1',                    conditionLabel: '等于',                    conditionValue: '=',                    inputLable: '3',                    inputValue: '3',                  },                ],              },              {                type: 'dimension',                label: '维度2',                key: '30357f52-2773-4dd2-9775-88f55ba5fa77',                conditionValue: '',                conditionLabel: '',                children: [                  {                    type: 'rule',                    label: '规则1',                    key: 'db6e0e61-2374-43c9-8a3e-176cf6e9221b',                    dimensionLabel: '职级',                    dimensionValue: '2',                    conditionLabel: '不等于',                    conditionValue: '!==',                    inputLable: 'a',                    inputValue: 'a',                  },                ],              },              {                type: 'dimension',                label: '维度3',                key: '25864967-8226-494d-b1a5-536d5ad78eb1',                conditionValue: '',                conditionLabel: '',                children: [                  {                    type: 'rule',                    label: '规则2',                    key: '4ba45def-5b59-4022-8f41-c382ef1e98aa',                    dimensionLabel: '职级',                    dimensionValue: '2',                    conditionLabel: '不等于',                    conditionValue: '!==',                    inputLable: 'b',                    inputValue: 'b',                  },                ],              },            ],          },          {            type: 'group',            label: '规则组2',            key: 'c1a86886-5f07-4454-915d-48370218aaaa',            conditionValue: '',            conditionLabel: '',            children: [              {                type: 'dimension',                label: '维度1',                key: '1785ce8f-55b4-4d5a-97b2-4b80244ebb17',                conditionValue: '',                conditionLabel: '',                children: [                  {                    type: 'rule',                    label: '规则1',                    key: 'e5b9f804-46f0-4082-ac40-024a5907248f',                    dimensionLabel: '职位',                    dimensionValue: '1',                    conditionLabel: '等于',                    conditionValue: '=',                    inputLable: 'cc',                    inputValue: 'cc',                  },                ],              },            ],          },        ],      }

我想编写一个函数,该函数最终的返回结果为:
((职位 = 1 or 职位 = 2 or 职位 = 3) or (职级 != a or 职级 != b)) and (职位 = cc)

目前我用递归没写出来

共有1个答案

令狐功
2023-10-30
// (((职位 = 1 or 职位 = 2 or 职位 = 3) or (职级 !== a) or (职级 !== b)) and ((职位 = cc)))function rule2text(rule) {  if(rule.type === 'rule') return [rule.dimensionLabel, rule.conditionValue ,rule.inputValue].join(' ');  return '('+rule.children.map(rule2text).join(' ' + rule.conditionValue + ' ')+')'

除了括号有多余的好像没啥问题

 类似资料:
  • API需要以下多部分/表单数据格式: 我的模型对象如下所示: 我如何通过使用我的model类发送多部分数据,而不是手动创建字符串并将其作为MultiPartBody.Part对象传递? 还有,有没有可能在这个功能中添加一个图像上传呢?

  • 问题内容: 所以,这就是我正在做的: 我有一张桌子,上面放着所有的桌子。 但是在一个特殊的场合,我希望一个特定的对象在各个方向都有,我将其设置为。 显然,我将CSS样式依次放在一个外部文件中。 但是渲染的CSS仅具有,并且似乎已被覆盖! 请说明: 这是怎么发生的以及为什么发生? 我应该如何安排这些规则来解决我的问题(除了内联样式)? 编辑:我在表中删除之前。我从来没有使用过它,我只是在这里提到它以

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当该选项卡活动时, 有一个名为current的类。现在我要向第一个子 添加不同的类 null null

  • 在中,如何将参数传递给Perl 6语法?我将参数作为子菜单的一部分传递给规则。我想知道我是如何完全在语法中做到这一点的。假设我有这样的东西: 如何将参数从传递到?我没有发现任何例子,关于parens的各种猜测都不起作用。

  • 有一些东西让我困惑,我没有找到关于VM规范的太多信息。这有点晦涩,如果有人能给我解释一下就好了。 这几行代码...... ..... 生成此输出: 浮动:无限 int: 2147483647 短:-1 字节:-1 、和是8位、16位和32位,带有两个补码和是32位和64位的IEEE 754(参见此处)。 根据我的理解,最大值的意味着尾数的所有位(52位)都切换到1。因此,转换为短或字节返回-1,即