# 深度去重

使用 lodash _.uniqWith 进行深度去重

> 标准页面: https://elysiatools.com/zh/tools/uniq-with

- **分类:** Data Processing

- **关键词:** 数组, 去重, 深度, 比较, lodash

## 概述

使用深度相等比较器去除重复值。

**亮点：**
- 使用 lodash `_.uniqWith`
- 使用 `_.isEqual` 进行比较
- 适用于对象数组

**示例：**
- 数组：`[{"id": 1}, {"id": 1}, {"id": 2}]`
- 结果：`[{"id": 1}, {"id": 2}]`

## 输入项

- **数组** (textarea): 输入 JSON 数组

## 适用场景

- 当数组包含对象，需要基于内容而非引用进行去重时。
- 当使用 lodash 进行数据清洗，希望简化深度去重操作时。
- 当处理 API 响应或数据库查询结果，需要确保数据唯一性时。

## 工作原理

- 输入一个 JSON 数组到工具的文本区域。
- 工具调用 lodash 的 _.uniqWith 函数，使用 _.isEqual 进行深度比较。
- 输出去重后的数组，保留每个唯一元素的第一个出现，顺序不变。

## 使用案例

- 数据清洗：去除日志或记录中的重复条目。
- 前端开发：在状态管理中确保数组元素的唯一性。
- 数据分析：预处理数据集，消除重复观测值。

## 常见问题

### 这个工具能处理嵌套对象吗？

是的，工具使用深度比较，可以处理嵌套对象和数组。

### 输入必须是 JSON 格式吗？

是的，输入需要是有效的 JSON 数组。

### 去重后元素的顺序会改变吗？

不会，工具保留原始顺序，只去除后续的重复项。

### 这个工具支持哪些数据类型？

支持所有 JSON 兼容的数据类型，包括对象、数组、字符串、数字等。

### 输出结果可以直接使用吗？

是的，输出是标准的 JSON 数组，可以直接用于后续处理。

## 相关工具

- [按条件移除](https://elysiatools.com/zh/tools/remove-by-predicate): 使用 lodash _.remove 按条件移除数组元素
- [数组压缩工具](https://elysiatools.com/zh/tools/compact-array): 使用 lodash _.compact 从数组中移除假值
- [删除数组前N项](https://elysiatools.com/zh/tools/drop-items): 使用lodash _.drop删除数组的前N个元素
- [从右侧删除数组元素](https://elysiatools.com/zh/tools/drop-right-items): 使用 lodash 的 _.dropRight 从数组末尾删除 N 个元素
- [移除指定值](https://elysiatools.com/zh/tools/pull-values): 使用 lodash _.pull 从数组中移除指定值
- [排序去重](https://elysiatools.com/zh/tools/sorted-unique): 使用 lodash _.sortedUniq 为排序数组去重
- [排序按字段去重](https://elysiatools.com/zh/tools/sorted-unique-by): 使用 lodash _.sortedUniqBy 为排序数组按字段去重
- [数组去重](https://elysiatools.com/zh/tools/uniq-array): 使用 lodash _.uniq 为数组去重

## 示例

- [Grafana 高级应用示例](https://elysiatools.com/zh/samples/grafana-samples): 全面的 Grafana 示例，涵盖高级仪表板设计、告警配置、数据源集成和插件开发
- [SWC Rust编译器示例](https://elysiatools.com/zh/samples/swc): Speedy Web Compiler (SWC)示例，包括配置、插件和与现代JavaScript/TypeScript项目的集成
- [二维码示例](https://elysiatools.com/zh/samples/qrcode-samples): 用于测试二维码读取和生成工具的示例二维码图像
- [Apache Pulsar 示例](https://elysiatools.com/zh/samples/pulsar-samples): Apache Pulsar 示例，包括发布订阅、读取器、不同订阅类型的消费者、模式管理和分层存储，适用于企业级消息传递
