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

求编写JavaScript脚本提取指定嵌套数据对象生成新对象

从嵌套对象中提取指定嵌套对象的JavaScript实现

需求说明

编写JavaScript脚本,从包含多个嵌套对象的父对象中,提取指定名称的嵌套对象(保留完整键名与所有属性值)并生成新对象。此前克隆时因仅提取值导致丢失键名,无法保留结构。

示例数据

const parentObject = {
  "J Doe Company": {
    "lastUpdate": "01/05/2023",
    "website": "jdoecompany.com",
    "userID": "jdoe1985@gmail.com",
    "password": "igfndhsi1985",
    "primaryCC": "Discover",
    "secondaryCC": "Capital One",
    "primaryBank": "Chase",
    "secondaryBank": "",
    "sq1": "Year Graduated HS",
    "sa1": "1985",
    "sq2": "",
    "sa2": "",
    "notes1": "Sample password record",
    "notes2": ""
  },
  "Bob The Builder": {
    "lastUpdate": "01/05/2023",
    "website": "bobthebuilder.com",
    "userID": "bobthebuilder@gmail.com",
    "password": "bbob1985",
    "primaryCC": "Amazon Visa",
    "secondaryCC": "Mastercard",
    "primaryBank": "Wells Fargo",
    "secondaryBank": "",
    "sq1": "First Girlfriend's Name",
    "sa1": "Kaye",
    "sq2": "",
    "sa2": "",
    "notes1": "Sample password record",
    "notes2": ""
  },
  "SpongeBob Square Pants": {
    "lastUpdate": "01/07/2023",
    "website": "spongebobsquarepants.com",
    "userID": "spongebob@gmail.com",
    "password": "spongebob1999",
    "primaryCC": "None/Not Applicable",
    "secondaryCC": "",
    "primaryBank": "None/Not Applicable",
    "secondaryBank": "",
    "sq1": "Year show debuted on TV",
    "sa1": "1999",
    "sq2": "",
    "sa2": "",
    "notes1": "Animated TV show for kids",
    "notes2": ""
  }
};

解决方案代码

// 提取指定嵌套对象并生成新对象的函数
function extractNestedObject(parentObj, targetKey) {
  // 检查目标键是否存在于父对象中
  if (!parentObj.hasOwnProperty(targetKey)) {
    return null; // 不存在则返回null
  }

  // 深克隆目标对象,避免原对象被修改
  const clonedValue = JSON.parse(JSON.stringify(parentObj[targetKey]));

  // 创建新对象并保留原键名
  const newObject = {};
  newObject[targetKey] = clonedValue;

  return newObject;
}

// 使用示例:提取"SpongeBob Square Pants"对应的对象
const extractedObj = extractNestedObject(parentObject, "SpongeBob Square Pants");
console.log(extractedObj);

代码说明

  • 保留键名:通过创建新对象并将目标键名与克隆后的值绑定,解决了之前仅提取值丢失键名的问题。
  • 深克隆:使用JSON.parse(JSON.stringify())实现深克隆,确保新对象的属性修改不会影响原父对象。如果对象中包含函数、Symbol等特殊类型,可替换为递归克隆函数。
  • 存在性检查:先判断目标键是否存在,避免访问不存在的属性导致错误。

输出结果

{
  "SpongeBob Square Pants": {
    "lastUpdate": "01/07/2023",
    "website": "spongebobsquarepants.com",
    "userID": "spongebob@gmail.com",
    "password": "spongebob1999",
    "primaryCC": "None/Not Applicable",
    "secondaryCC": "",
    "primaryBank": "None/Not Applicable",
    "secondaryBank": "",
    "sq1": "Year show debuted on TV",
    "sa1": "1999",
    "sq2": "",
    "sa2": "",
    "notes1": "Animated TV show for kids",
    "notes2": ""
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:05:12