条件分支
条件分支节点通过可视化条件构建器实现 if-else 逻辑分流。
概述
使用条件构建器可视化配置左值、操作符和右值,无需手写代码。满足条件走 True 分支,否则走 False 分支。
使用方法
拖入节点后,在条件构建器中配置三项:
- 左值:要判断的变量或常量,通常引用上游节点输出的变量,如
{{变量名}} - 操作符:选择判断方式,共 10 种(详见下方)
- 右值:与左值比较的目标值。
empty/not_empty不需要右值
配置完成后,将 True 和 False 两个输出端口分别连接到对应的下游节点。
操作符参考
== 等于
判断左值是否等于右值。
- 比较规则:先做严格相等(
===),不相等时转为字符串比较 - 数组:逐元素递归比较,长度和每个元素都相同才视为相等
左值: "hello" 右值: "hello" → True
左值: 10 右值: "10" → True (转字符串后相等)
左值: [1,2] 右值: [1,2] → True
左值: [1,2] 右值: [2,1] → False (顺序不同)
!= 不等于
== 取反。左值不等于右值时返回 True。
> 大于
数值比较。左值大于右值时返回 True。
- 左值为数组时取数组长度参与比较
- 非数字值转换失败时视为
0
左值: 10 右值: 5 → True
左值: [1,2,3] 右值: 2 → True (数组长度 3 > 2)
< 小于
数值比较。左值小于右值时返回 True。规则同 >。
>= 大于等于
数值比较。左值大于或等于右值时返回 True。规则同 >。
<= 小于等于
数值比较。左值小于或等于右值时返回 True。规则同 >。
contains 包含
判断左值是否包含右值。
- 左值为数组:判断右值是否为数组中的某个元素
- 左值为字符串:判断右值是否为子串
左值: "hello world" 右值: "world" → True
左值: ["a","b","c"] 右值: "b" → True
左值: [1,2,3] 右值: 4 → False
not_contains 不包含
contains 取反。左值不包含右值时返回 True。
empty 为空
判断左值是否为空。不需要填写右值。
以下情况视为空:
| 左值类型 | 为空的条件 |
|---|---|
| 字符串 | ""(空字符串) |
| 数组 | [](长度为 0) |
| 对象 | {}(无属性) |
| 其他 | null / undefined |
左值: "" → True
左值: [] → True
左值: null → True
左值: "hello" → False
左值: [1,2] → False
not_empty 不为空
empty 取反。左值不为空时返回 True,同样不需要填写右值。
关于类型转换
条件判断引擎会自动对左值做预处理:
- JTCElement 值:自动提取元素的文本内容,去除首尾空白
- 数组值:递归清洗内部每个元素的类型
- 数值比较(
><>=<=):数组取其长度,其他值调用parseFloat,转换失败视为0
注意:
==和!=比较失败时会降级为字符串比较,因此10 == "10"为 True。如果要严格区分类型,先在上游用「设置变量」的数据清理管道转换类型。
参数参考
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 判断条件 | ConditionBuilder | — | 可视化条件构建器,配置左值、操作符和右值 |
常见问题
contains 匹配不到子串
现象:字符串明显包含目标子串,却返回 False。
原因:contains 对字符串比较是区分大小写的。"Hello" 包含 "ello" → True,但包含 "hello" → False。
解决:如果不需要区分大小写,先在上游用「设置变量」的数据清理管道将变量转为小写(lower 操作符),再做比较。
数值比较结果异常
现象:左值是数字字符串,数值比较结果与预期不符。
原因:> < >= <= 内部用 parseFloat 转换。parseFloat("abc") 返回 NaN,被兜底为 0,导致 "abc" > 5 实际变成 0 > 5 → False。
解决:确保参与数值比较的左值确为数字。可在上游用「设置变量」的 toNumber 操作符转换。