Node.js中如何生成含重复id键的JSON对象?
解决JavaScript中无法保留对象重复键的问题
JavaScript对象的键是唯一不可重复的,这是语言本身的特性——当你用Object.assign合并多个带有id键的对象时,后面的id值会直接覆盖前面的,这就是你的代码无法保留多个id的根本原因。
根据你的需求,这里提供几种可行的解决思路:
1. 生成带重复键的JSON字符串(非标准场景)
如果你的需求是输出一个包含重复id键的JSON格式字符串(注意:这不符合JSON官方规范,仅适用于能兼容重复键的特殊解析场景),可以手动拼接字符串实现:
const array = ["10", "20"]; // 生成所有id的键值对字符串 const idEntries = array.map(id => `"id": "${id}"`).join(', '); // 拼接最终的JSON字符串 const resultStr = `{ ${idEntries}, "value1": true, "value2": false }`; console.log(resultStr); // 输出结果:{"id": "10", "id": "20", "value1": true, "value2": false}
2. 用数组存储多个id(标准推荐方案)
如果是需要结构化存储多个id,最符合JavaScript和JSON规范的方式是将id放入数组中,后续处理也更便捷:
const array = ["10", "20"]; const resultObj = { ids: array, // 用数组统一存储所有id value1: true, value2: false }; console.log(resultObj); // 输出结果:{ ids: ["10", "20"], value1: true, value2: false }
3. 给id添加唯一后缀(兼容单键场景)
如果必须保留类似id的键名但允许区分,可以通过索引给每个id键添加后缀:
const array = ["10", "20"]; // 生成带后缀的id键值对 const idObj = array.reduce((acc, item, idx) => { acc[`id${idx + 1}`] = item; return acc; }, {}); // 合并其他固定键值对 const resultObj = { ...idObj, value1: true, value2: false }; console.log(resultObj); // 输出结果:{ id1: "10", id2: "20", value1: true, value2: false }
内容的提问来源于stack exchange,提问作者shyama moneymohan
相关产品推荐
相关产品推荐

