如何在向JSON对象添加键值对时为已存在的键名添加递增数字后缀
解决方案
核心思路
这个需求很实用,核心逻辑就是先确认原始键名是否可用,如果已经被占用,就从数字1开始生成带_(number)后缀的新键名,循环检查直到找到一个未被使用的键为止。
代码实现(JavaScript)
以JavaScript为例(毕竟JSON对象在JS里就是普通对象,处理起来最直接):
function addToMap(map, targetKey, value) { // 先尝试直接用原始键名存入 if (!(targetKey in map)) { map[targetKey] = value; return; } // 原始键已存在,开始找可用的后缀键 let currentNum = 1; let newKey; do { newKey = `${targetKey}_(${currentNum})`; currentNum++; } while (newKey in map); // 找到可用键后存入数据 map[newKey] = value; }
测试验证
用你给出的示例场景测试一下:
// 初始化你的临时存储对象 const myMap = { "hello": "world" }; // 重复添加hello键 addToMap(myMap, "hello", "do you like pizza?"); addToMap(myMap, "hello", "https://google.com/"); console.log(myMap);
输出结果和预期完全一致:
{ "hello": "world", "hello_(1)": "do you like pizza?", "hello_(2)": "https://google.com/" }
额外说明
- 这个函数会自动识别所有已存在的带后缀键名——哪怕是你手动添加的
hello_(3),下次再添加hello时,函数会从4开始找可用键,不会出现冲突。 - 如果用其他语言(比如Python),逻辑完全通用,只需要把对象存在性检查的语法换成对应语言的写法就行(比如Python用
targetKey not in map)。
内容的提问来源于stack exchange,提问作者Zee
相关产品推荐
相关产品推荐

