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
相关产品推荐
相关产品推荐

