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

如何合并现有JSON数组中的多个JSON对象?

合并JSON数组中重复对象的解决方案

嘿,我来帮你搞定这个JSON数组合并的问题!从你给出的数组来看,里面存在多个重复QuestionKey的对象(比如两个WarrantyGuarantee、两个RewardLoyalty),咱们可以通过按QuestionKey去重合并的方式来整理这个数组,下面用JavaScript来演示最常用的实现方法:

方案1:按QuestionKey去重,保留重复项的内容

如果重复的对象内容完全一致(像你例子里的情况),我们可以直接用reduce方法遍历数组,以QuestionKey作为唯一标识来合并对象:

// 你的原始JSON数组
const originalArr = [ 
  { "WarrantyGuarantee":{ "Row Id":"RA048", "QuestionKey":"WarrantyGuarantee", "Answer":"Y" } }, 
  { "RewardLoyalty":{ "Row Id":"RA051", "QuestionKey":"RewardLoyalty", "Answer":"Y" } }, 
  { "WarrantyGuarantee":{ "Row Id":"RA048", "QuestionKey":"WarrantyGuarantee", "Answer":"Y" } }, 
  { "RewardLoyalty":{ "Row Id":"RA051", "QuestionKey":"RewardLoyalty", "Answer":"Y" } }, 
  { "MinCost":{ "Row Id":"RA044", "QuestionKey":"MinCost", "Answer":"hgf" } } 
];

// 合并去重逻辑
const mergedArr = Object.values(originalArr.reduce((acc, currentItem) => {
  // 提取每个元素中嵌套的实际对象(因为每个元素是单键对象)
  const targetObj = Object.values(currentItem)[0];
  // 用QuestionKey作为键,将对象存入累加器,重复的会自动覆盖
  acc[targetObj.QuestionKey] = targetObj;
  return acc;
}, {}));

console.log(mergedArr);

合并后的结果

[
  {
    "Row Id": "RA048",
    "QuestionKey": "WarrantyGuarantee",
    "Answer": "Y"
  },
  {
    "Row Id": "RA051",
    "QuestionKey": "RewardLoyalty",
    "Answer": "Y"
  },
  {
    "Row Id": "RA044",
    "QuestionKey": "MinCost",
    "Answer": "hgf"
  }
]

方案2:合并重复QuestionKey的不同值(比如Answer数组)

如果同一个QuestionKey对应的Answer不同,想要把这些值合并成数组,可以修改逻辑如下:

const mergedWithCombinedAnswers = Object.values(originalArr.reduce((acc, currentItem) => {
  const targetObj = Object.values(currentItem)[0];
  if (!acc[targetObj.QuestionKey]) {
    // 第一次遇到该QuestionKey,初始化Answer为数组
    acc[targetObj.QuestionKey] = { ...targetObj, Answer: [targetObj.Answer] };
  } else {
    // 已存在该QuestionKey,将新的Answer加入数组
    acc[targetObj.QuestionKey].Answer.push(targetObj.Answer);
  }
  return acc;
}, {}));

console.log(mergedWithCombinedAnswers);

这种方案的结果示例(假设原数组有不同Answer)

如果原数组里有一个WarrantyGuarantee的Answer是"N",合并后会变成:

[
  {
    "Row Id": "RA048",
    "QuestionKey": "WarrantyGuarantee",
    "Answer": ["Y", "N"]
  },
  // ...其他对象
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:44:26