# 排序按字段去重

使用 lodash _.sortedUniqBy 为排序数组按字段去重

> 标准页面: https://elysiatools.com/zh/tools/sorted-unique-by

- **分类:** Data Processing

- **关键词:** 数组, 去重, 排序, 字段, lodash

## 概述

按属性路径对排序数组进行去重。

**亮点：**
- 使用 lodash `_.sortedUniqBy`
- 支持属性路径（如 `id`、`meta.key`）
- 返回 JSON 格式的结果

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

## 输入项

- **数组** (textarea): 输入 JSON 数组
- **属性路径** (text): 用于比较的属性路径

## 适用场景

- 当您有一个已按目标字段排序的数组，需要移除连续重复项时。
- 当您需要基于对象中的某个嵌套属性（如 `meta.key`）对数组进行去重时。
- 当您希望快速、无需编写代码地对排序数据进行去重处理时。

## 工作原理

- 在“数组”输入框中粘贴或输入一个已排序的 JSON 数组。
- 在“属性路径”输入框中指定用于比较和去重的字段路径（例如 `id`、`profile.email`）。
- 点击处理按钮，工具将调用 lodash 的 `_.sortedUniqBy` 函数执行去重。
- 处理完成后，页面将直接显示去重后的 JSON 数组结果。

## 使用案例

- 清洗从数据库导出的已按ID排序的用户列表，去除重复的用户记录。
- 处理按时间排序的API响应数据，基于某个唯一标识符（如订单号）去除重复条目。
- 分析日志文件时，对已按错误代码排序的条目进行去重，快速统计唯一错误类型。

## 常见问题

### 输入的数组必须是排序好的吗？

是的，本工具基于 `_.sortedUniqBy`，它假设输入数组已按去重字段排序，仅移除连续的重复项。未排序的数组可能导致去重不完整。

### 属性路径支持嵌套对象吗？

支持。您可以使用点号分隔的路径来访问嵌套属性，例如 `address.city` 或 `data.0.id`。

### 处理大量数据时速度如何？

由于算法针对已排序数组优化，其时间复杂度为 O(n)，处理速度非常快，适合中等规模的数据集。

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

输入必须是有效的 JSON 数组格式，例如 `[{"id": 1}, {"id": 2}]`。请确保 JSON 语法正确。

### 输出结果是什么格式？

输出结果是一个去重后的 JSON 数组，格式与输入数组保持一致。

## 相关工具

- [数组压缩工具](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/uniq-array): 使用 lodash _.uniq 为数组去重
- [按字段去重](https://elysiatools.com/zh/tools/uniq-by): 使用 lodash _.uniqBy 按属性路径去重
- [排除指定值](https://elysiatools.com/zh/tools/without-values): 使用 lodash _.without 排除数组中的指定值

## 示例

- [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 工具链示例，包括配置、代码检查、格式化、打包和项目管理
