# 数组异或

使用 lodash _.xor 计算数组对称差

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

- **分类:** Data Processing

- **关键词:** 数组, 异或, 对称差, 差集, lodash

## 概述

返回只出现在某一个数组中的值。

**亮点：**
- 使用 lodash `_.xor`
- 支持 2-4 个 JSON 数组
- 适用于对称差计算

**示例：**
- 数组 1：`[1, 2, 3]`
- 数组 2：`[2, 3, 4]`
- 结果：`[1, 4]`

## 输入项

- **数组 1** (textarea): 输入 JSON 数组
- **数组 2** (textarea): 输入 JSON 数组
- **数组 3** (textarea): 可选的第三个数组
- **数组 4** (textarea): 可选的第四个数组

## 适用场景

- 需要比较两个或多个列表，找出其中不重复的元素时。
- 在数据清洗或预处理阶段，需要合并多个数据源并去除共有项时。
- 在编程或数据分析中，需要快速验证多个数据集合之间的差异时。

## 工作原理

- 在对应的输入框中，以 JSON 数组格式输入 2 到 4 组数据。
- 工具内部调用 lodash 的 _.xor 函数对所有输入数组进行计算。
- 函数返回一个新数组，其中包含所有输入数组中不重复的元素。
- 计算结果以 JSON 数组格式直接显示在页面上。

## 使用案例

- 数据清洗：合并来自不同来源的用户ID列表，并找出各来源独有的用户。
- 集合运算：在算法或逻辑判断中，快速求解多个集合的对称差。
- 测试验证：对比两组测试数据的输出，快速定位差异项。

## 常见问题

### 什么是数组异或（对称差）？

数组异或，也称为对称差，是指所有在给定数组中出现，但不同时出现在所有数组中的元素集合。

### 这个工具最多支持几个数组？

该工具支持输入 2 到 4 个 JSON 数组进行计算。

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

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

### 输出结果的顺序是固定的吗？

输出结果的顺序由 lodash _.xor 函数决定，通常基于元素首次出现的顺序和去重逻辑，不保证特定顺序。

### 可以处理包含对象或嵌套数组的复杂数组吗？

可以，但比较是基于引用的。两个内容相同但内存地址不同的对象会被视为不同元素。

## 相关工具

- [获取首个元素](https://elysiatools.com/zh/tools/head-item): 使用 lodash _.head 获取数组的第一个元素
- [查找索引](https://elysiatools.com/zh/tools/index-of): 使用 lodash _.indexOf 查找值在数组中的索引
- [获取除最后一个元素](https://elysiatools.com/zh/tools/initial-items): 使用 lodash _.initial 获取除最后一个元素外的所有元素
- [数组交集](https://elysiatools.com/zh/tools/intersection-arrays): 使用 lodash _.intersection 查找多个数组的共同值
- [第 N 项](https://elysiatools.com/zh/tools/nth-item): 使用 lodash _.nth 获取指定索引的元素
- [排序插入索引](https://elysiatools.com/zh/tools/sorted-index): 使用 lodash _.sortedIndex 查找排序数组插入索引
- [数组尾部](https://elysiatools.com/zh/tools/tail-items): 使用 lodash _.tail 获取数组除首项外的元素
- [取前几项](https://elysiatools.com/zh/tools/take-items): 使用 lodash _.take 获取数组前 N 项

## 示例

- [Grafana 高级应用示例](https://elysiatools.com/zh/samples/grafana-samples): 全面的 Grafana 示例，涵盖高级仪表板设计、告警配置、数据源集成和插件开发
- [二维码示例](https://elysiatools.com/zh/samples/qrcode-samples): 用于测试二维码读取和生成工具的示例二维码图像
- [D3.js 数据可视化示例](https://elysiatools.com/zh/samples/d3js-data-visualization): 全面的D3.js数据可视化示例，包括图表、地图、动画和交互式可视化
- [Rome JavaScript 工具链示例](https://elysiatools.com/zh/samples/rome): Rome JavaScript 工具链示例，包括配置、代码检查、格式化、打包和项目管理
