```mdx
---
title: "列表运算符"
description: "从数组中筛选、排序和选择元素"
icon: "filter"
---

列表运算符节点通过筛选、排序和选择特定元素来处理数组。当您需要处理混合文件上传、大型数据集或任何需要在下游处理前进行分离或组织的数组数据时，请使用它。

<Frame caption="列表运算符节点界面">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/522a0c932aab93d4f3970168412f759e.png" alt="列表运算符界面" />
</Frame>

## 数组处理问题

大多数工作流节点期望单个值，而不是数组。当您在一个变量中拥有像 `[image.png, document.pdf, audio.mp3]` 这样的混合内容时，您需要将其分离成下游节点可以有效处理的专注流。

列表运算符充当智能路由器，使用过滤器分离混合数组并为专业处理做好准备。

<Frame caption="数组处理工作流示例">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/812d1b2f167065e17df8392b2cb3cc8a.png" alt="数组处理示例" />
</Frame>

## 支持的数据类型

该节点处理不同类型的数组，提供适当的过滤选项：

**Array[string]** - 文本列表、类别、名称或任何字符串集合

**Array[number]** - 数字数据、分数、测量或计算  

**Array[file]** - 混合文件上传，具有丰富的元数据筛选功能

## 操作

### 筛选

根据属性提取特定项目。对于文件数组，可以根据以下进行筛选：

<Tabs>
  <Tab title="内容属性">
    **类型** - 根据内容类别筛选：图像、文档、音频、视频
    
    **MIME 类型** - 精确的内容类型识别（如 image/jpeg, application/pdf 等）
    
    **扩展名** - 文件扩展名（如 .pdf, .jpg, .mp3, .docx 等）
  </Tab>
  
  <Tab title="文件属性">
    **大小** - 处理限制的文件大小约束
    
    **名称** - 文件名模式或特定名称
    
    **传输方式** - 区分本地上传和基于 URL 的文件
  </Tab>
</Tabs>

### 排序

根据任何属性组织筛选结果：

**升序 (ASC)** - 从最小到最大值，A-Z 字母顺序

**降序 (DESC)** - 从最大到最小值，Z-A 反向顺序

### 选择

从处理过的数组中选择特定元素：

**取前 N 个** - 筛选和排序后选择前 1-20 个项目

**第一个记录** - 仅返回第一个匹配元素作为单个值

**最后一个记录** - 仅返回最后一个匹配元素作为单个值

## 输出变量

**result** - 用于批量处理的完整筛选和排序数组

**first_record** - 从开头的单个元素，适合用于“主要”或“最新”项目选择

**last_record** - 从末尾的单个元素，适用于“最近”或“最终”选择

## 混合文件处理示例

处理用户上传文档和图像的工作流：

<Frame caption="混合文件处理工作流">
  <img src="https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/610358293217e54b55b7e1d4d16bf83c.png" alt="混合文件处理示例" />
</Frame>

**实施步骤：**

1. **配置混合上传** - 启用文件上传功能以接受多种文件类型
2. **按类型拆分** - 使用不同的筛选器配置单独的列表运算符节点：
   - 筛选 `type = "image"` → 路由至具有视觉能力的LLM
   - 筛选 `type = "document"` → 路由至文档提取器
3. **适当处理** - 图像直接分析，文档进行文本提取
4. **合并结果** - 将处理过的输出合并为统一的响应

此模式自动将不同文件类型路由到适当的处理器，创造无缝的多模态用户体验。

## 常见用例

**文件类型路由** - 根据内容类型将混合上传分离到专业处理管道中。

**数据筛选** - 根据特定标准从大型数据集中提取相关子集。

**内容优先级** - 从集合中排序并选择最重要或最近的项目。

**质量控制** - 在处理之前筛选掉无效、超大的或不支持的内容。

**批处理准备** - 将数据组织成可管理的块，以便下游迭代或并行处理。

## 最佳实践

**规划过滤条件** - 根据您的下游处理需求定义清晰的过滤规则。

**使用适当的输出类型** - 根据下游节点如何使用数据，选择完整数组、第一个记录或最后一个记录。

**处理空结果** - 考虑当过滤器没有返回匹配项时会发生什么，并规划适当的备用逻辑。

**使用真实数据测试** - 使用实际用户上传验证过滤行为，确保在生产中可靠运行。
```