数组节点
概述
Array节点用于从任意类型的一个或多个输入构建数组。它还可以通过Flatten
设置将多个数组合并为一个数组。
默认情况下,输入会被扁平化处理,因此如果任何输入本身是数组,它们将被合并到输出数组中。可以通过取消勾选Flatten
设置来禁用此行为。
- 输入
- 输出
- 编辑器设置
示例1:从多个输入创建数组
假设你有三个文本节点:一个值为"Hello"
,另一个值为"World"
,最后一个值为"!"
。如果你想从这三个字符串创建一个数组,可以执行以下操作:
- 向您的图表中添加一个数组节点。
- 将第一个Text节点的输出连接到Array节点的
Input 1
。 - 将第二个Text节点的输出连接到Array节点的
Input 2
。 - 将第三个Text节点的输出连接到Array节点的
Input 3
。
Array Node的Output
现在将是["Hello", "World", "!"]
。
示例2:从数组输入创建数组
假设你有两个数组节点:一个值为["One", "Two"]
,另一个值为["Three", "Four"]
。如果你想从这两个数组创建一个新数组,可以执行以下操作:
- 向您的图表添加一个数组节点。
- 将第一个Array节点的输出连接到Array节点的
Input 1
。 - 将第二个Array节点的输出连接到Array节点的
Input 2
。 - 启用
Flatten
设置。
Array Node的Output
现在将是["One", "Two", "Three", "Four"]
。
示例3:创建不扁平化的数组
如果想从多个数组中创建新数组而不进行扁平化处理,您可以按照示例2中的相同步骤操作,但保持Flatten
设置禁用状态。这样Array节点的Output
输出将会是[["One", "Two"], ["Three", "Four"]]
。
示例4:使用索引输出
假设你有一个数组节点的值为 ["Apple", "Banana", "Cherry"]
。如果你想创建一个新数组,其中每个元素都是一个包含原始数组中索引和对应水果名称的字符串,可以执行以下操作:
- 向您的图表添加一个文本节点,文本内容为
"[{{index}}] - {{fruit}}"
。 - 将Array节点的
Output
连接到Text节点的Fruit
输入端口。 - 将Array节点的
Indices
输出连接到Text节点的Index
输入。 - 在文本节点上启用
Split
设置。
Text Node的Output
现在将是["[0] - Apple", "[1] - Banana", "[2] - Cherry"]
。
在这个例子中,Array节点的Indices
输出提供了一个索引数组,对应原始数组的元素。然后我们利用这些索引和原始数组元素来创建一个格式化字符串的新数组。Split
设置确保Text节点为输入数组的每个元素生成单独的输出。
数组扁平化
Array节点有一个Flatten
设置。启用时,该设置会将数组输入的每个元素视为要添加到主数组中的单独元素。这在处理数组输入并希望将这些数组的所有元素合并到单个数组中时特别有用。
请注意,禁用flatten时可能会得到数组的数组。Rivet对这些结构的支持不够完善,您可能需要使用Code Node来处理它们。
如果启用了Deep
设置,Array节点将递归展平所有数组输入。这意味着如果数组输入包含另一个数组,Array节点也会展平内部数组。您可以通过这种方式将Array节点用作Flatten节点。
错误处理
如果输入缺失或为空,Array Node 在数组创建过程中会直接忽略它。这在处理可能不总是存在的可选输入时非常有用。
问:如果我将非数组节点连接到数组节点会发生什么?
A: Array Node 设计用于处理任何类型的输入。如果连接的是非数组输入,该节点会将其视为要添加到数组中的单个元素。
问:我可以将一个数组节点连接到另一个数组节点吗?
A: 是的,您可以将一个Array节点连接到另一个Array节点。如果启用了Flatten
设置,输入数组的每个元素将被视为要添加到主数组中的单独元素。如果Flatten
被禁用,输入数组将作为单个元素添加到主数组中。
问:如果输入缺失或为null会怎样?
A: 如果输入缺失或为null,Array Node在创建数组的过程中会直接忽略它。这在处理可能不总是存在的可选输入时非常有用。