# 按值反转

使用 lodash _.invertBy 按值分组反转

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

- **分类:** Data Processing

- **关键词:** 反转, 对象, lodash, 分组, 键

## 概述

按值或转换后的值对键进行分组。

**亮点：**
- 使用 lodash `_.invertBy`
- 将键分组成数组
- 支持可选属性路径迭代器

**示例：**
- 对象：`{"a":"x","b":"x","c":"y"}`
- 结果：`{"x":["a","b"],"y":["c"]}`

## 输入项

- **对象** (textarea): 输入 JSON 对象
- **迭代器路径** (text): 用于值转换的可选属性路径

## 适用场景

- 需要将具有相同属性值的键归类到一起时
- 在处理大型 JSON 对象并希望按特定字段进行反向索引时
- 需要对数据进行快速分组统计或重构数据映射关系时

## 工作原理

- 在输入框中粘贴您的 JSON 对象数据。
- （可选）在迭代器路径中指定属性路径，以便对值进行转换或提取。
- 点击执行，工具将自动调用 _.invertBy 方法进行反转。
- 获取按值分组后的新 JSON 对象，其中每个值对应一个包含原始键的数组。

## 使用案例

- 将用户 ID 按所属部门进行分组统计
- 根据状态码将任务列表分类归档
- 重构配置项，将相同配置值的参数聚合在一起

## 常见问题

### 什么是按值反转？

按值反转是指将对象的键值对关系颠倒，将原有的值作为新对象的键，并将原有的键收集为数组作为新值。

### 该工具使用了什么技术？

该工具底层集成了 lodash 库的 _.invertBy 方法，确保了数据处理的准确性和高性能。

### 迭代器路径有什么作用？

迭代器路径允许你在反转前对对象的值进行二次处理，例如提取嵌套对象中的某个属性作为分组依据。

### 如果多个键具有相同的值会怎样？

所有具有相同值的键会被自动归入同一个数组中，作为该值对应的键的值。

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

输入必须是标准的 JSON 对象格式，例如 {"a": 1, "b": 1, "c": 2}。

## 相关工具

- [按键计数](https://elysiatools.com/zh/tools/count-by): 使用 lodash _.countBy 按派生键计数
- [深度默认值](https://elysiatools.com/zh/tools/defaults-deep): 使用 lodash _.defaultsDeep 应用深度默认值
- [按键分组](https://elysiatools.com/zh/tools/group-by): 使用 lodash _.groupBy 按派生键分组
- [对象反转](https://elysiatools.com/zh/tools/invert-object): 使用 lodash _.invert 反转键和值
- [继承键列表](https://elysiatools.com/zh/tools/keys-in-list): 使用 lodash _.keysIn 获取键列表
- [键列表](https://elysiatools.com/zh/tools/keys-list): 使用 lodash _.keys 获取键列表
- [数组解压](https://elysiatools.com/zh/tools/unzip-arrays): 使用 lodash _.unzip 拆分分组数组
- [数组压缩](https://elysiatools.com/zh/tools/zip-arrays): 使用 lodash _.zip 按索引合并数组

## 示例

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

## 相关内容

- [JSON 交换与格式翻译工具](https://elysiatools.com/zh/hubs/json-convert): 在一个专题里比较 JSON 与 CSV、YAML、TOML、GraphQL、XML、Markdown、Excel、BSON、EDN 等结构化格式之间的转换工具。
- [JSON 检查、对比与转换工具](https://elysiatools.com/zh/hubs/json-utility): 把 JSON 格式化、差异对比、路径检查、Schema 校验、合并、转换和导出工具集中到一个专题中，适合 API 与数据处理流程。
- [JSON Schema、Mock 数据与 API 夹具生成工具](https://elysiatools.com/zh/hubs/json-generate): 围绕JSON Schema 生成、Mock 负载构建与 API 夹具准备整理的一组工具。
- [JSON 格式化、对比与规范化工具](https://elysiatools.com/zh/hubs/json-format): 在一个专题中比较 JSON 格式化、差异对比、日志审查、配置比较和数据规范化工具，适合需要让 JSON 更易读、更易审查的流程。
