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

NodeJS如何合并重复QuestionGroupID数据,将optionItems转为数组

解决方案:合并相同QuestionGroupID的选项条目

核心逻辑是借助对象映射缓存已处理的分组,遍历原始数据时完成选项合并,最后将缓存对象转为目标数组格式:

处理代码示例

// 示例数据库查询返回的原始数据
const dbRawResults = [
  {
    QuestionGroupID: 1,
    QuestionDescription: "偏好设置",
    OptionDescription: "自动模式"
  },
  {
    QuestionGroupID: 1,
    QuestionDescription: "偏好设置",
    OptionDescription: "手动模式"
  },
  {
    QuestionGroupID: 2,
    QuestionDescription: "权限选择",
    OptionDescription: "只读权限"
  }
];

// 分组合并逻辑
const groupMap = {};

dbRawResults.forEach(item => {
  const groupKey = item.QuestionGroupID;
  if (groupMap[groupKey]) {
    // 分组已存在,追加选项到数组
    groupMap[groupKey].optionItems.push(item.OptionDescription);
  } else {
    // 分组不存在,初始化新条目
    groupMap[groupKey] = {
      QuestionGroupID: groupKey,
      QuestionDescription: item.QuestionDescription,
      optionItems: [item.OptionDescription]
    };
  }
});

// 转换为最终数组格式
const finalResult = Object.values(groupMap);

输出结果

[
  {
    "QuestionGroupID": 1,
    "QuestionDescription": "偏好设置",
    "optionItems": ["自动模式", "手动模式"]
  },
  {
    "QuestionGroupID": 2,
    "QuestionDescription": "权限选择",
    "optionItems": ["只读权限"]
  }
]

注意事项

  • 若原始数据中同一QuestionGroupID对应不同的QuestionDescription,当前逻辑会取第一条的描述值,可根据业务需求添加额外判断(如抛出提示、统一覆盖或保留全部描述)
  • 若使用异步数据库查询,需确保在获取到完整的dbRawResults后再执行上述合并逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:31