# 对象赋值

使用 lodash _.assign 将来源属性赋给目标对象

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

- **分类:** Data Processing

- **关键词:** 赋值, 对象, lodash, 合并, 属性

## 概述

将来源对象的自有可枚举属性分配到目标对象。

**亮点：**
- 使用 lodash `_.assign`
- 后面的来源会覆盖前面的值
- 返回合并后的对象

**示例：**
- 目标：`{"a":1}`
- 来源 1：`{"b":2}`
- 来源 2：`{"a":3}`
- 结果：`{"a":3,"b":2}`

## 输入项

- **目标对象** (textarea): 输入目标 JSON 对象
- **来源 1** (textarea): 第一个来源对象
- **来源 2** (textarea): 可选的来源对象
- **来源 3** (textarea): 可选的来源对象

## 适用场景

- 需要合并多个配置对象或数据对象时。
- 需要将多个 API 响应或数据源整合为一个统一对象时。
- 需要用一个对象的属性覆盖另一个对象的默认值时。

## 工作原理

- 在“目标对象”输入框中，输入作为基础的 JSON 对象。
- 在“来源”输入框中，依次输入一个或多个要合并的 JSON 对象。
- 工具使用 lodash `_.assign` 方法，将所有来源对象的属性按顺序分配给目标对象。
- 后面的来源对象中的属性会覆盖前面相同名称的属性，最终输出合并后的新对象。

## 使用案例

- 合并应用程序的默认配置与用户自定义配置。
- 将来自不同微服务的响应数据聚合成一个前端可用的数据对象。
- 在对象初始化时，用一组预设值覆盖另一组默认值。

## 常见问题

### 最多支持合并多少个来源对象？

工具支持一个目标对象和最多三个来源对象。

### 这个操作会修改我输入的原始对象吗？

不会。工具返回的是一个合并后的新对象，不会修改您输入的任何原始对象。

### 如果输入的不是有效的 JSON 对象会怎样？

工具会提示输入格式错误，请确保输入的是有效的 JSON 格式。

### 如何确保某个来源的特定属性不被后续来源覆盖？

您需要调整来源对象的输入顺序。将包含您想保留属性的对象放在后面输入，因为后输入的来源会覆盖先前的同名属性。

### 这个工具支持深度合并（递归合并嵌套对象）吗？

不支持。本工具使用的是 `_.assign`，它只进行浅合并。对于嵌套对象，来源对象的整个嵌套对象会直接替换目标对象中的对应属性。

## 相关工具

- [对象默认值](https://elysiatools.com/zh/tools/defaults-object): 使用 lodash _.defaults 为对象填充默认值
- [从键值对构建对象](https://elysiatools.com/zh/tools/from-pairs): 使用 lodash _.fromPairs 将键值对数组转换为对象
- [填充数组](https://elysiatools.com/zh/tools/fill-array): 使用 lodash _.fill 从起始索引到结束索引用值填充数组
- [按深度扁平化数组](https://elysiatools.com/zh/tools/flatten-depth-array): 使用 lodash _.flattenDepth 按指定深度扁平化数组
- [排序去重](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-by): 使用 lodash _.uniqBy 按属性路径去重
- [键值配对](https://elysiatools.com/zh/tools/zip-object): 使用 lodash _.zipObject 生成对象

## 示例

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