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

JavaScript遍历嵌套对象补全第二层缺失键(值设为0)的实现方法

嵌套对象补充缺失键的JavaScript实现

需求说明

遍历嵌套对象,为每个子项的values数组补充所有小于5的缺失键(即键为"1"、"2"、"3"、"4"),缺失键对应的值设为0。

示例数据(标准化后)

先将你提供的示例数据整理为标准JavaScript数组结构:

const data = [
  {
    "key": "2010",
    "values": [
      { "key": "4", "value": 10 },
      { "key": "3", "value": 2 }
    ]
  },
  {
    "key": "2011",
    "values": [
      { "key": "5", "value": 25 },
      { "key": "3", "value": 4 }
    ]
  }
];

解决方案代码

// 定义需要确保存在的目标键(1-4的字符串形式)
const requiredKeys = ['1', '2', '3', '4'];

// 遍历每个年份数据项
data.forEach(item => {
  // 将现有values转换为键值映射,快速判断键是否存在
  const existingMap = item.values.reduce((map, entry) => {
    map[entry.key] = entry.value;
    return map;
  }, {});

  // 检查每个目标键,缺失则添加
  requiredKeys.forEach(key => {
    if (!(key in existingMap)) {
      item.values.push({ key, value: 0 });
    }
  });

  // 可选:按键的数字大小排序,让结果更规整
  item.values.sort((a, b) => parseInt(a.key) - parseInt(b.key));
});

// 查看处理后的结果
console.log(data);

代码解释

  • requiredKeys:明确需要补充的键范围,这里是小于5的正数字符串(1-4)。
  • reduce创建映射:把现有values数组转为对象映射,避免每次查找都遍历数组,提升效率。
  • 补充缺失键:遍历目标键集合,若键不存在则添加新的{key, value: 0}项。
  • 排序(可选):将values数组按键的数字顺序排列,让输出结构更整齐,不需要的话可以删除这行代码。

处理后结果

  • 2010的values数组变为:
    [
      { "key": "1", "value": 0 },
      { "key": "2", "value": 0 },
      { "key": "3", "value": 2 },
      { "key": "4", "value": 10 }
    ]
    
  • 2011的values数组变为:
    [
      { "key": "1", "value": 0 },
      { "key": "2", "value": 0 },
      { "key": "3", "value": 4 },
      { "key": "4", "value": 0 },
      { "key": "5", "value": 25 }
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16