🔂如何实现一个 n*m 循环?

type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入
我们曾在《🔂常用的逻辑(条件、循环等)节点详细介》里讲过,n8n 的大部分节点拥有内置循环功能。也就是在默认情况下,当一个包含多个 item 的 json 数据被传递给下游节点时,下游节点将根据一级 item 多次运行,每次只对一个 item 进行处理,直到处理完整个 json。
但在某些情况下,比如我们要实现一个 n*m 循环时,就不能依靠节点的内置循环功能了。
什么是 n*m 循环?
举一个简单的例子:一列是 n1\n2\n3,另一列是 m1\m2\m3。我希望 n1 和每个 m 发生关系,n2 和每个 m 发生关系,n3 和每个 m 发生关系,最终呈现 9 个数值。
我们假设有这样一个样例数据:
n列
m列
First item
1
Second item
2
Third item
3
 
我们想要得到的内容如下:
输出阵列
1 && First item
1 && Second item
1 && Third item
2 && First item
2 && Second item
2 && Third item
3 && First item
3 && Second item
3 && Third item
如果你使用通常的方法,将整个表直接传递给 Set 节点,会发现得出的答案并不正确:
notion image
notion image
这是由于,n8n 的内置循环只能循环一次,并且将整个 json 数据视为一个整体,它在取 n=1 的进程中,m=1。而 n=2 时,m=2。那么最终输出的结果就不会是我们想要的 9 个值,三三互相联动,而是如图所示的三个值。
这种涉及两次循环的,我们就需要一般用不到的节点 Loop。让我们直接来看看改造后的 Workflow:
notion image
你发现诀窍了吗?诀窍就是将整个原始数据在 Loop 的循环中再复制一份。
具体的原理是这样的,循环外的数据首次经过 Loop 节点时,被拆分成了 n 行独立数据,并传递给循环内。循环内的数据直接传递给 Edit Fields 触发节点内置的循环功能,用于处理 m 行数据。
notion image
我们可以仔细看一下,在 Edit Fields 中,我们的 m 列取值来自循环外的数据节点,n 列数据来自循环内的数据节点。所以,我们可以看到 Edit Fields 节点在 OutPut 面板的左上角有一个 3 of 3(3 items),其实被触发了三次,每次循环三次。
当我们回到 Loop 节点,会发现我们想要的结果已经生成了:
notion image
值得注意的是,你只有在处理多重循环的时候,才需要 loop 节点。如果你是通过搜索引擎找到本页的,那么你应当知道的是:n8n 中大部分的循环场景不需要使用 loop 节点,你可以在这里看到与循环有关的介绍。
获取中国哪些县城有麦当劳n8n 作为一家公司的介绍
Loading...
目录