# 键值配对

使用 lodash _.zipObject 生成对象

> 标准页面: https://elysiatools.com/zh/tools/zip-object

- **分类:** Data Processing

- **关键词:** 数组, 配对, 对象, 键, lodash

## 概述

按索引将键和值组合成对象。

**亮点：**
- 使用 lodash `_.zipObject`
- 键和值以 JSON 数组提供
- 缺失值默认为 undefined

**示例：**
- 键：`["id", "name"]`
- 值：`[1, "Ada"]`
- 结果：`{"id": 1, "name": "Ada"}`

## 输入项

- **键** (textarea): 输入键的 JSON 数组
- **值** (textarea): 输入值的 JSON 数组

## 适用场景

- 当您拥有两个独立的列表（如 ID 列表和对应的名称列表），需要快速将它们合并为一个键值对对象时。
- 在数据处理或 API 响应组装过程中，需要从两个数组动态构建对象，而不想手动编写循环或拼接代码时。
- 当您需要确保键和值严格按照数组索引一一对应，避免手动映射出错时。

## 工作原理

- 在“键”输入框中，提供一个包含所有键名的 JSON 数组，例如 `\["id", "name", "age"\]`。
- 在“值”输入框中，提供一个包含所有对应值的 JSON 数组，例如 `\[1, "Alice", 30\]`。
- 工具内部调用 lodash 的 `_.zipObject` 函数，将两个数组按索引位置合并。
- 生成的 JSON 对象会直接显示在结果区域。如果值数组比键数组短，缺失的键对应的值将为 `undefined`。

## 使用案例

- 数据映射：将从数据库或 API 获取的 ID 列表与对应的详情列表快速合并为对象集合。
- 配置生成：根据预定义的键列表和动态获取的默认值列表，生成配置对象。
- 数据转换：将两列数据（如 CSV 的两列）转换为前端或脚本易于使用的键值对格式。

## 常见问题

### 输入的键和值必须是有效的 JSON 数组吗？

是的，两个输入都必须是格式正确的 JSON 数组字符串。

### 如果键数组和值数组的长度不一致会怎样？

工具会正常处理。如果值数组更短，多余的键对应的值会是 `undefined`；如果值数组更长，多余的值会被忽略。

### 使用这个工具需要编程知识吗？

不需要。只需了解 JSON 数组的基本格式即可使用。

### 生成的结果是什么格式？

结果是一个标准的 JSON 对象字符串，可以直接复制使用。

### 这个工具能处理嵌套数组或对象作为值吗？

可以。值数组中的元素可以是任何有效的 JSON 值，包括数字、字符串、布尔值、`null`、数组或嵌套对象。

## 相关工具

- [数组压缩工具](https://elysiatools.com/zh/tools/compact-array): 使用 lodash _.compact 从数组中移除假值
- [对象默认值](https://elysiatools.com/zh/tools/defaults-object): 使用 lodash _.defaults 为对象填充默认值
- [删除数组前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/drop-while): 使用 lodash 的 _.dropWhile 在满足条件时从数组开头移除元素
- [填充数组](https://elysiatools.com/zh/tools/fill-array): 使用 lodash _.fill 从起始索引到结束索引用值填充数组
- [从键值对构建对象](https://elysiatools.com/zh/tools/from-pairs): 使用 lodash _.fromPairs 将键值对数组转换为对象
- [JSON键提取器](https://elysiatools.com/zh/tools/json-key-extractor): 从JSON对象中提取所有键，支持多种输出格式。非常适合分析JSON结构、生成文档和理解复杂的嵌套对象。

## 示例

- [ZIP 查看器示例](https://elysiatools.com/zh/samples/zip-viewer-samples): 包含文本和 JSON 文件的小型 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数据可视化示例，包括图表、地图、动画和交互式可视化
