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

如何使用jQuery合并JSON中的object_a与object_b对象?

解决方案

你可以通过遍历对象属性、筛选非空值的方式合并object_a和object_b,同时保留原数据中的其他对象属性。以下是具体实现:

原生JavaScript实现

// 定义处理单个数据项的函数
function mergeItem(item) {
  const merged = {};

  // 先处理object_a,存入非空属性
  Object.keys(item.object_a).forEach(key => {
    const val = item.object_a[key];
    if (val.trim() !== '') {
      merged[key] = val;
    }
  });

  // 再处理object_b,用非空属性补充/覆盖
  Object.keys(item.object_b).forEach(key => {
    const val = item.object_b[key];
    if (val.trim() !== '') {
      merged[key] = val;
    }
  });

  // 保留原数据的其他属性,替换为合并后的object
  const result = {...item};
  delete result.object_a;
  delete result.object_b;
  result.object = merged;

  return result;
}

// 处理整个数组
const processedData = originalData.map(mergeItem);

jQuery实现

如果一定要用jQuery的工具方法,可基于$.each和$.map实现:

function mergeItem(item) {
  const merged = {};

  // 遍历object_a,筛选非空值
  $.each(item.object_a, function(key, val) {
    if (val.trim() !== '') {
      merged[key] = val;
    }
  });

  // 遍历object_b,补充非空值
  $.each(item.object_b, function(key, val) {
    if (val.trim() !== '') {
      merged[key] = val;
    }
  });

  // 复制原对象并替换属性
  const result = $.extend({}, item);
  delete result.object_a;
  delete result.object_b;
  result.object = merged;

  return result;
}

// 处理数组
const processedData = $.map(originalData, mergeItem);

说明

  • 核心逻辑:优先保留object_a和object_b中的非空属性值,确保每个键最终对应有效的内容;
  • 原数据中的其他属性(如你示例中的..some other objects..)会被完整保留;
  • 如果遇到object_a和object_b同一键都有非空值的情况,当前逻辑会用object_b的值覆盖object_a,你可以调整遍历顺序来改变优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:25