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

如何将含单个嵌套对象的对象转换为单层对象?附代码示例

解决方案:对象扁平化与属性重组

嘿,这个需求很容易实现,我给你分享两种常用的JavaScript方案,都是简洁易懂的:

方案一:使用ES6对象展开运算符(推荐)

这是最直观简洁的写法,利用ES6的展开语法直接把嵌套的abc对象展开,同时保留原有的d属性,再添加id属性:

var myObj = { abc:{a:1, b:2, c:3}, d:4 };
// 解构取出abc和d,然后重组
var { abc, d } = myObj;
var newObj = { ...abc, d, id: 'abc' };

console.log(newObj); 
// 输出:{ a:1, b:2, c:3, d:4, id:'abc' }

代码解释:

  • var { abc, d } = myObj:通过对象解构,从myObj中直接提取出abc对象和d属性的值
  • { ...abc, d, id: 'abc' }:用展开运算符...把abc里的所有属性平铺到新对象中,然后添加d属性(这里用了属性简写,等同于d: d),最后加上id属性

方案二:使用Object.assign(兼容旧环境)

如果需要兼容不支持ES6的旧环境,可以用Object.assign方法来合并对象:

var myObj = { abc:{a:1, b:2, c:3}, d:4 };
var newObj = Object.assign({}, myObj.abc, { d: myObj.d, id: 'abc' });

console.log(newObj);
// 输出:{ a:1, b:2, c:3, d:4, id:'abc' }

代码解释:

  • Object.assign({}, target1, target2):第一个参数是目标空对象,后面的参数是要合并进去的对象/属性
  • 先把myObj.abc的所有属性合并到空对象,再合并{ d: myObj.d, id: 'abc' }里的属性,最终得到想要的结构

两种方案都能完美实现你的需求,优先推荐方案一,代码更简洁易读~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:34:07