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

如何在JavaScript中循环获取嵌套对象子键并删除指定内层键

解决方案:获取并删除指定内层键

你的代码目前只遍历了外层的分类键,没有深入到每个分类下的内层对象,而且delete (key)的写法完全无效——这里的key是外层分类的字符串,根本不是内层对象的属性。要实现获取并删除内层的0、1、2、3、4键,你需要嵌套遍历,并针对正确的对象属性执行删除操作。

修正后的代码

const jsondata = { 
  "Automobile Assembler": { 
    "0": "Sazgar Engineering Works Ltd: 147.25", 
    "1": "Pak Suzuki Motor Co. Ltd: 165.07", 
    "2": "Millat Tractors Ltd: 724.80", 
    "3": "Indus Motor Company Ltd: 956.42", 
    "4": "Hinopak Motors Ltd: 360.00", 
    "5": "Honda Atlas Cars(Pakistan) Ltd: 198.07", 
    "6": "Ghandhara Nissan Ltd:64.93", 
    "7": "Ghandhara Industries Ltd: 120.40", 
    "8": "Ghani Automobile Industries Ltd: 5.80", 
    "9": "Dewan Farooque Motors Ltd: 4.32", 
    "10": "Atlas Honda Ltd: 392.50", 
    "11": "Al - Ghazi Tractors Ltd:353.21" 
  }, 
  "Automobile Parts & Accessories": { 
    "12": "Loads Limited: 15.00", 
    "13": "Thal Ltd:335.00", 
    "14": "The General Tyre & Rubber Company Ltd: 60.12", 
    "15": "Exide Pakistan Ltd:283.16", 
    "16": "Baluchistan Wheels Ltd: 62.00", 
    "17": "Bela Automotives Ltd: 1.30", 
    "18": "Atlas BatteryLtd: 174.02", 
    "19": "Dewan Automotive Engineering Ltd: 3.26", 
    "20": "Agriauto Industries Ltd: 187.79" 
  } 
};

// 定义要获取并删除的目标内层键(注意是字符串类型,因为原对象的键是字符串)
const targetInnerKeys = ['0', '1', '2', '3', '4'];

// 遍历外层每个分类
Object.keys(jsondata).forEach(categoryKey => {
  const categoryItems = jsondata[categoryKey];
  
  // 遍历目标键,逐个处理
  targetInnerKeys.forEach(key => {
    // 先检查当前分类下是否存在这个键,避免报错
    if (categoryItems.hasOwnProperty(key)) {
      // 获取并打印键和对应的值,满足"获取"需求
      console.log(`内层键 ${key} 的值:${categoryItems[key]}`);
      // 删除该键
      delete categoryItems[key];
    }
  });
});

// 可选:打印修改后的对象,验证删除结果
console.log('修改后的数据集:', jsondata);

代码说明

  1. 目标键数组:因为原对象的内层键是字符串类型的数字(比如"0"而非数字0),所以我们用字符串数组定义要处理的键。
  2. 嵌套遍历:先遍历外层的每个分类,拿到分类下的内层对象;再遍历目标键数组,处理每个内层键。
  3. 安全检查:用hasOwnProperty判断内层对象是否包含目标键,避免尝试删除不存在的属性导致意外问题。
  4. 正确删除:通过delete categoryItems[key]删除内层对象的属性,这才是针对目标对象的有效删除操作。

原代码的核心错误

  • 只遍历了外层分类键,没有进入内层对象处理具体的键。
  • delete (key)操作的是外层分类的字符串变量,而非内层对象的属性,完全达不到删除内层键的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:22:48