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

如何从嵌套JavaScript对象中提取第一层对象的所有属性

提取嵌套对象的第一层属性(最外层id=43的对象属性)

嘿,这个需求太常见啦!要拿到最外层那个id为43的对象的所有直接属性(不管里面嵌套的对象/数组内容),有好几种简单的方法,我给你一一演示:

方法1:浅拷贝(最快捷)

如果只是想快速复制第一层属性,用对象展开运算符或者Object.assign就搞定了——它们只会复制对象的第一层键值对,嵌套的内容还是原引用,但完全满足你提取第一层属性的需求:

// 假设你的最外层对象叫rootObj
const rootObj = { 
  id: 43, 
  name: 'ajajaj', 
  nestedObj1: { /* ...你的嵌套内容... */ }, 
  foo0: '...' 
};

// 方法A:展开运算符
const firstLevelProps = { ...rootObj };

// 方法B:Object.assign
const firstLevelProps = Object.assign({}, rootObj);

这两种方式得到的firstLevelProps就是最外层对象的所有第一层属性,和原对象的第一层内容完全一致。

方法2:遍历自有属性(更灵活)

如果你需要对第一层属性做额外处理(比如过滤掉某些属性),可以用Object.keys或者Object.getOwnPropertyNames来遍历:

// 提取所有可枚举的自有第一层属性
const firstLevelProps = Object.keys(rootObj).reduce((result, key) => {
  result[key] = rootObj[key];
  return result;
}, {});

// 如果要包括不可枚举的自有属性,用Object.getOwnPropertyNames
const allFirstLevelProps = Object.getOwnPropertyNames(rootObj).reduce((result, key) => {
  result[key] = rootObj[key];
  return result;
}, {});

比如你想排除某个属性(比如foo0),只需要在reduce里加个判断:

const filteredProps = Object.keys(rootObj).reduce((result, key) => {
  if (key !== 'foo0') { // 排除foo0属性
    result[key] = rootObj[key];
  }
  return result;
}, {});

方法3:解构赋值(适合已知属性名的场景)

如果已经明确知道最外层对象的所有属性名,用解构赋值也很直观:

const { id, name, nestedObj1, foo0 } = rootObj;
const firstLevelProps = { id, name, nestedObj1, foo0 };

不过这种方法不够灵活,如果属性名是动态的,还是前面的方法更实用。

注意点

  • 这些方法都不会修改原对象,都是生成新的对象来存放第一层属性。
  • 如果嵌套对象/数组需要深拷贝,那是另一个需求,但你只需要提取第一层属性的话,浅拷贝完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:31:13