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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:34