表达式与代码
数组上的转换方法
在 Duaer 表达式里,数组方法写在数组后面,例如 {{ $json.ids.unique() }}。average、max、min 遇到非数字会报错。
在 Duaer 表达式里调用
这些方法作用在数组上。一部分是 Duaer 的扩展,Code 节点里没有同名实现。
方法
- append(元素...):加到末尾并返回数组。
- average():数字的平均值。有非数字会报错。
- chunk(长度):切成等长的子数组。
- compact():去掉 null、空字符串和 undefined。
- concat(其他数组...):接到后面。
- difference(另一个数组):留下当前数组有、另一个没有的元素。
- filter(函数):留下函数返回 true 的元素。
- find(函数):第一个符合条件的元素。没有则是 undefined。要全部匹配用 filter()。
- first()、last():第一项、最后一项。
- includes(元素)、indexOf(元素):是否包含,以及第一次出现的位置。找不到是 -1,位置从 0 开始。
- intersection(另一个数组):两边都有的元素。
- isEmpty()、isNotEmpty():没有元素,或 null、undefined,算空。
- join(分隔符):合成一个字符串。和 split() 相反。
- length:元素个数。
- map(函数):对每个元素算出新数组。
- max()、min():最大、最小的数字。有非数字会报错。
- pluck(字段名...):从每个对象里取出这些字段。不是对象或没有该字段的元素会被忽略。
- randomItem():随机一项。
- reduce(函数, 初始值):收成一个值。
- removeDuplicates(键?)、unique():去掉重复元素。
- renameKeys(原名, 新名):改数组里对象的字段名。可以连续写多对。
- reverse():倒序。
- slice(起, 止):取一段,不改原数组的用法以表达式结果为准。
- smartJoin(键字段, 值字段):每个对象提供一对键和值,合成一个对象。
- sort(比较函数?):字符串可直接排序。数字和对象要给比较函数。
- sum():数字求和。
- mergeIntoObject(另一个对象数组):按键合并两组对象。长度不同时保留更长的那组里多出来的元素。
- toJsonString():变成 JSON 字符串。
- toSpliced(起点, 删除个数, 新元素...):在指定位置增删,返回新数组。
- toString():用逗号拼成字符串。要别的分隔符用 join()。
- union(另一个数组):两边的元素并起来,去掉重复。
常见问题
Duaer 数组的 average 在什么情况下会报错?
在 Duaer 表达式里,数组的 average()、max()、min() 和 sum() 要求元素是数字。数组里有非数字时,这些方法会报错。
Duaer 的 unique 和 removeDuplicates 做什么?
在 Duaer 表达式里,unique() 和 removeDuplicates() 去掉数组里的重复元素。pluck(字段名) 则从每个对象里取出指定字段,忽略不是对象或没有该字段的元素。
同组
在 Duaer 里定义可复用的变量
Duaer 的变量把一份值存起来,给多条数字组织用。表达式和 Code 节点里写成 $vars.键名。变量一律是字符串,运行中只读。
表达式在 Duaer 里写表达式
Duaer 表达式写在 {{ }} 里,用来在节点参数中读取当前项、前面的节点和变量。只做字段整理时,先用 Edit Fields(Set)节点把数据准备好。
表达式Duaer 表达式里的内置方法和变量
Duaer 在表达式里提供读取数据的变量和按类型调用的方法。Code 节点跑的是普通 JavaScript 和原生 Luxon,标成 Duaer 扩展的方法在那里可能不存在,或参数不一样。
表达式表达式里常用的快捷方法
Duaer 表达式用 $json 读当前项,用 $("节点名") 读前面的节点,用 $now 和 $if() 处理时间和条件。这些名字在参数的表达式模式里可用。
表达式HTTP 节点分页时能用的变量
Duaer 的 HTTP Request 节点在分页表达式里提供 $pageCount、$request 和 $response。这三个名字只在这个节点里有效,别的节点写了也读不到。
转换按数据类型使用转换方法
Duaer 表达式可以在值后面调用转换方法,例如 {{ $json.name.toTitleCase() }}。这些方法按数组、布尔、日期、数字、对象、字符串分开。Code 节点没有这套扩展。
转换布尔值上的转换方法
在 Duaer 表达式里,布尔值可以判断空不空,也可以转成数字或字符串。true 转成数字是 1,false 是 0。
转换日期上的转换方法
在 Duaer 表达式里,$now 和 $today 是 Luxon 的 DateTime。字符串或数字要先 toDateTime(),再调用 format、plus、setZone 这些方法。
转换数字上的转换方法
在 Duaer 表达式里,数字方法做取整、奇偶判断,以及转成布尔、字符串或 DateTime。round 取最接近的数,ceil 向上,floor 向下。
转换对象上的转换方法
在 Duaer 表达式里,对象方法用来判断字段、删字段、合并,以及把对象编成查询字符串。keys() 和 values() 分别给出字段名和值。
转换字符串上的转换方法
在 Duaer 表达式里,字符串方法做大小写、截取、判断邮箱和网址,以及 base64 和 URL 编解码。调用写在字符串后面。
查询用 JMESPath 查询 JSON
Duaer 用 $jmespath(对象, "查询") 在 JSON 上做 JMESPath 查询。表达式和 JavaScript 的 Code 节点可以用。Python 的 Code 节点没有这个函数。
日期在表达式里用 Luxon 处理日期
Duaer 表达式里的日期是 Luxon 的 DateTime。$now 和 $today 直接就是 DateTime。Code 节点用的是原生 Luxon,format() 和 plus(数量, 单位) 不能照搬过去。
示例Duaer 表达式示例
这些示例都在 Duaer 的表达式模式里。它们读取当前项、补上默认值、格式化日期,并在字段很多时改用 Edit Fields(Set)。
示例方法和变量对照
这是 Duaer 表达式里最常用的名字。当前项用 $json,前面的节点用 $("节点名"),变量用 $vars,转换方法按数据类型分到各自的页面。