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

如何用JavaScript循环合并两个JSON生成目标嵌套JSON结构

解决方案:关联两个JSON生成目标结构

没问题,我来帮你搞定这个需求!咱们可以通过构建一个RowId映射表来高效关联两个数据集,避免嵌套循环的低效问题,最终生成你需要的mainJson结构。下面是完整的实现代码:

// 你的原始数据
const subJson1 = [{ "RowId": "00272727", "Rowlabel": "Ravi", "role": "team member" }];
const subJson2 = [{ "info": "room 1", "RowId": "00272727", "type": "Type01", "title": "Meet John Miller" }, { "info": "room 2", "type": "Type02", "RowId": "00272727", "title": "Meet Mitchell" }];

// 步骤1:构建RowId到人员信息的映射,同时初始化appointments数组
const personMap = {};
subJson1.forEach(person => {
  // 提取需要的字段,注意把Rowlabel转成name,符合目标结构
  personMap[person.RowId] = {
    name: person.Rowlabel,
    role: person.role,
    appointments: [] // 先初始化空数组,后续添加预约
  };
});

// 步骤2:遍历预约数据,关联到对应的人员
subJson2.forEach(appointment => {
  const person = personMap[appointment.RowId];
  if (person) {
    // 提取预约需要的字段(去掉RowId,因为目标结构里不需要)
    person.appointments.push({
      info: appointment.info,
      type: appointment.type,
      title: appointment.title
    });
  }
});

// 步骤3:生成最终的mainJson
const mainJson = {
  people: Object.values(personMap)
};

console.log(mainJson);

代码逻辑解释:

  • 映射表构建:先用subJson1创建一个以RowId为键的对象,这样后续查找人员的时间复杂度是O(1),比嵌套循环的O(n*m)高效得多,尤其是数据量大的时候。
  • 字段转换:注意把subJson1里的Rowlabel转换成目标结构需要的name,同时剔除不需要的RowId字段。
  • 关联预约:遍历subJson2时,通过RowId快速找到对应的人员,把预约信息(同样剔除RowId)添加到该人员的appointments数组中。
  • 处理多人员场景:如果subJson1里有多个人员对象,这段代码也能自动处理,最终people数组会包含所有关联好预约的人员。

边界情况处理:

  • 如果某个RowId在subJson1里存在但subJson2里没有对应的预约,该人员的appointments会是一个空数组,符合JSON结构规范。
  • 如果subJson2里的RowId在subJson1中找不到,这段代码会自动跳过该预约,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:34