# 数组差集

使用 lodash _.difference 从数组中删除存在于其他数组中的值

> 标准页面: https://elysiatools.com/zh/tools/difference-arrays

- **分类:** Data Processing

- **关键词:** 数组, 差集, 排除, 过滤, 删除, lodash

## 概述

此工具使用 lodash 的 `_.difference` 方法创建一个不包含在其他提供数组中的唯一值数组。

**功能：**
- 严格相等比较 (===)
- 支持多个排除数组
- 字符串区分大小写/不区分大小写比较
- 验证 JSON 数组输入格式

**示例：**
- 输入数组：`[2, 1, 2, 3]`
- 排除：`[2, 3]`
- 结果：`[1]`

## 输入项

- **源数组** (textarea): \[2, 1, 2, 3\]
- **排除数组 1** (textarea): 要从源数组中排除的值
- **排除数组 2** (textarea): 要排除的其他值（可选）
- **排除数组 3** (textarea): 要排除的更多值（可选）
- **区分大小写** (checkbox): 对于字符串比较，取消选中以进行不区分大小写的匹配

## 适用场景

- 需要从一份名单或ID列表中，批量移除另一份名单中存在的条目时。
- 比较两个数据集，找出仅存在于第一个数据集中的独特元素时。
- 在数据清洗或预处理阶段，需要过滤掉已知的无效值或黑名单条目时。

## 工作原理

- 在“源数组”输入框中，粘贴或输入您的原始JSON数组。
- 在“排除数组1”输入框中，输入您希望从源数组中移除的值的JSON数组。
- （可选）根据需要，填写“排除数组2”和“排除数组3”以排除更多值。
- （可选）根据字符串比较需求，勾选或取消“区分大小写”选项。

## 使用案例

- 从活跃用户ID列表中，移除已加入黑名单的用户ID。
- 对比本周与上周的商品SKU列表，找出本周新增的独有商品。
- 在合并多个数据源前，使用差集清理掉已知的测试数据或脏数据。

## 常见问题

### 这个工具使用什么方法计算差集？

它使用 lodash 库中的 `_.difference` 方法，通过严格相等（===）进行比较。

### 字符串比较时，如何设置不区分大小写？

取消勾选“区分大小写”选项即可。例如，开启时“Apple”和“apple”被视为不同值，关闭时则视为相同。

### 可以同时排除多个数组吗？

可以。工具提供最多三个排除数组输入框，所有排除数组中的值都会被从源数组中移除。

### 输入的数组格式有什么要求？

输入必须是有效的JSON数组格式，例如 `["a", "b"]` 或 `[1, 2, 3]`。工具会验证格式。

### 输出结果的顺序是怎样的？

结果数组中元素的顺序与它们在源数组中首次出现的顺序一致，且已去除重复项。

## 相关工具

- [数组去重工具](https://elysiatools.com/zh/tools/array-deduplicator): 使用各种去重方法移除数组中的重复元素
- [数组过滤工具](https://elysiatools.com/zh/tools/array-filter): 从数组中过滤掉指定类型的元素（移除数字、字符串、布尔值、对象等）
- [数组压缩工具](https://elysiatools.com/zh/tools/compact-array): 使用 lodash _.compact 从数组中移除假值
- [移除指定值](https://elysiatools.com/zh/tools/pull-values): 使用 lodash _.pull 从数组中移除指定值
- [BOM字符移除器](https://elysiatools.com/zh/tools/data-bom-remover): 从文本和文件内容中移除BOM（字节顺序标记）字符。非常适合清理有编码问题的文本文件、修复CSV导入和为处理准备数据。 功能特点： - 检测并移除UTF-8 BOM (EF BB BF) - 检测并移除UTF-16 BOM (FE FF 或 FF FE) - 检测并移除UTF-32 BOM (00 00 FE FF 或 FF FE 00 00) - 支持多种输入格式 - 可视化BOM字符显示 - 详细检测报告 - 支持批量文本处理 常见用途： - 修复CSV文件导入错误 - 清理文本文件编码问题 - 为JSON解析准备数据 - 修复XML解析问题 - 解决API数据编码冲突 - 标准化文本数据格式
- [数组元素删除器](https://elysiatools.com/zh/tools/array-element-deleter): 删除数组中的指定元素，支持多种删除方法
- [边界值处理器](https://elysiatools.com/zh/tools/data-boundary-processor): 高级边界值处理工具，用于识别和处理数值数据中的最小值和最大值。完美适用于数据验证、范围检查、统计分析和数据预处理。 功能特点： - 多种边界检测方法（绝对值、百分位数、标准差） - 灵活处理策略（裁剪、删除、替换、变换） - 自定义范围验证 - 非对称边界处理 - 批量处理能力 - 综合边界统计 - 数据质量评估 - 可视化边界报告 常见用途： - 数据验证和质量控制 - 传感器数据范围检查 - 金融数据限制执行 - 统计数据预处理 - 机器学习特征工程 - 数据库约束验证
- [删除数组前N项](https://elysiatools.com/zh/tools/drop-items): 使用lodash _.drop删除数组的前N个元素

## 示例

- [重复行示例](https://elysiatools.com/zh/samples/text-duplicate-line-samples): 用于测试重复行移除工具的各种重复行类型的示例文件
- [特殊字符示例](https://elysiatools.com/zh/samples/text-special-characters-samples): 用于测试非字母数字字符移除的各种特殊字符、标点符号和符号的示例文本文件
- [代码注释示例](https://elysiatools.com/zh/samples/code-comment-samples): 用于测试注释移除的各种注释样式代码示例文件
- [Android Java 文件操作示例](https://elysiatools.com/zh/samples/android-file-operations-java): Android Java 文件操作示例，包括文本文件读写、文件复制移动、目录遍历和文件验证

## 相关内容

- [文件与数据差异对比工具](https://elysiatools.com/zh/hubs/file-data-diff-comparison-tools): 比较两个候选产物，先按格式选择合适的 diff 路径，再补做结构或语义复核，并在需要严格验收时完成完整性校验。
