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

JavaScript:按匹配QId键合并对象数组的answer字段

合并相同QId的对象answer字段实现方案

这个需求太常见啦!咱们用JavaScript就能轻松搞定,核心思路是先按QId分组,把相同ID的answer字段拼接起来,最后再转成目标数组。直接上代码示例:

首先定义你的原始数组:

const originalData = [
  {"QId":"2030","answer":"~4591^Pain"},
  {"QId":"2030","answer":"~4592^Bad Breath"},
  {"QId":"2153","answer":"~5106^2ede"},
  {"QId":"2152","answer":"~5102^24fgf"},
  {"QId":"2154","answer":"~5109^No"},
  {"QId":"2152","answer":"~5109^New Answer"}
];

然后用reduce方法完成分组和合并:

const mergedData = Object.values(
  originalData.reduce((groupedObj, currentItem) => {
    // 检查当前QId是否已经在分组对象中存在
    if (groupedObj[currentItem.QId]) {
      // 存在的话直接拼接answer字段
      groupedObj[currentItem.QId].answer += currentItem.answer;
    } else {
      // 不存在的话,浅拷贝当前对象存入分组(避免修改原数组对象)
      groupedObj[currentItem.QId] = {...currentItem};
    }
    return groupedObj;
  }, {}) // 初始值是一个空对象,用来存分组结果
);

console.log(mergedData);

代码逻辑解释:

  1. reduce遍历原始数组,用groupedObj这个临时对象按QId做分组键;
  2. 遇到已存在的QId,就把当前项的answer拼接到对应对象的answer后面;
  3. 遇到新的QId,就把当前对象的副本存入分组对象(用{...currentItem}浅拷贝,防止后续修改影响原数组);
  4. 最后用Object.values()把分组对象的所有值提取出来,转成你想要的数组格式。

运行这段代码后,输出结果就完全符合你的要求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:03:10