You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Object.assign或其他方法实现嵌套对象属性合并?

实现对象合并的几种方法

嘿,这个需求很容易解决,我给你分享几种实用的实现方式,不管是用Object.assign还是更现代的ES6语法都能轻松达成目标:

方法一:使用Object.assign直接修改原对象

如果可以接受修改原o1对象的meta属性,直接用Object.assign把t1的属性合并进去就行:

let o1 = { meta: { intent: 'i' } };
const t1 = { topic: 't' };

// 将t1的属性合并到o1.meta中
Object.assign(o1.meta, t1);

console.log(o1); 
// 输出:{ meta: { intent: 'i', topic: 't' } }

说明:Object.assign会把后续源对象(这里是t1)的属性复制到目标对象(o1.meta)里,如果有重复属性会覆盖,这里刚好是新增属性,完美契合需求。

方法二:使用Object.assign创建新对象(无副作用)

如果不想修改原有的o1和t1,可以创建一个全新的对象,避免对原始数据产生影响:

let o1 = { meta: { intent: 'i' } };
const t1 = { topic: 't' };

// 生成新的目标对象,原对象保持不变
const result = {
  meta: Object.assign({}, o1.meta, t1)
};

console.log(result); 
// 输出:{ meta: { intent: 'i', topic: 't' } }

说明:这里先创建一个空对象作为目标,再依次合并o1.meta和t1的属性,最终得到独立的新对象。

方法三:ES6展开运算符(更简洁直观)

现在很多项目都用ES6+的语法,展开运算符...可以让代码更简洁,同样支持创建无副作用的新对象:

let o1 = { meta: { intent: 'i' } };
const t1 = { topic: 't' };

// 用展开运算符合并属性,生成新对象
const result = {
  meta: { ...o1.meta, ...t1 }
};

console.log(result); 
// 输出:{ meta: { intent: 'i', topic: 't' } }

说明:...o1.meta会把o1.meta的所有属性展开,...t1接着展开t1的属性,两者合并后组成新的meta对象,写法非常直观易懂。


内容的提问来源于stack exchange,提问作者user3552178

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:33:18