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

合并JSON对象时,如何追加相同键对应的数组值?

如何合并两个JSON对象并合并指定键的数组值而非覆盖?

我有两个JSON对象,合并时第一个对象里ST键的数组会被第二个对象的ST数组覆盖,现在需要实现数组值的合并而非覆盖:

对象1:

{"ST": ["Bin", "No", "Comp"], "OSS": ["Class"]}

对象2:

{"ST": ["Pro", "SU"]}

期望输出:

{"ST": ["Bin", "No", "Comp","Pro", "SU"], "OSS": ["Class"]}

解决方案(JavaScript示例)

你可以写一个自定义合并函数,针对数组类型的键做特殊处理,把两个数组合并,其他类型的键按常规逻辑处理:

function mergeObjects(obj1, obj2) {
  // 复制原对象,避免修改原始数据
  const merged = {...obj1};
  for (const key in obj2) {
    if (obj2.hasOwnProperty(key)) {
      // 检查当前键在两个对象中是否都是数组
      if (Array.isArray(merged[key]) && Array.isArray(obj2[key])) {
        // 合并数组,扩展运算符或concat都可以用
        merged[key] = [...merged[key], ...obj2[key]];
      } else {
        // 非数组类型直接覆盖或添加
        merged[key] = obj2[key];
      }
    }
  }
  return merged;
}

// 测试代码
const obj1 = {"ST": ["Bin", "No", "Comp"], "OSS": ["Class"]};
const obj2 = {"ST": ["Pro", "SU"]};
const mergedResult = mergeObjects(obj1, obj2);
console.log(mergedResult);

运行后就能得到你想要的合并结果。

额外说明

  • 这个函数不会修改原始的两个对象,而是返回一个新的合并对象
  • 如果需要合并数组时去重,可以把数组合并的代码改成:
    merged[key] = [...new Set([...merged[key], ...obj2[key]])];
    
    这样就能自动去除数组里的重复元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:22:35