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

ES5环境下合并多个对象:保留原对象名作为父键的需求

合并多个对象并保留原变量名为父键

以下是几种满足需求的实现方式:

1. 直接字面量声明(已知对象数量时使用)

如果已经确定要合并的对象,直接通过对象字面量就能快速构造目标结构:

var event = 
  { id   : '45243'
  , name : 'Cardiff locè'
  , loc  : 'Cardiff'
  }

var alert = 
  { node     : 'sdwan edge'
  , severity : 'critical'
  }

var mergedObject = {
  event: event,
  alert: alert
};

这种方式简单直接,每个原对象的变量名作为新对象的属性键,对应值就是原对象本身。

2. 通用合并函数(支持动态数量的对象)

如果需要合并的对象数量不固定,可以封装一个通用函数,接收键名和对象的配对,自动生成合并后的结果:

// 基础实现
function mergeWithKeys(...entries) {
  const merged = {};
  entries.forEach(([key, obj]) => {
    merged[key] = obj;
  });
  return merged;
}

// 使用示例
var mergedObject = mergeWithKeys(['event', event], ['alert', alert]);

// 若需合并更多对象,直接追加参数即可
// var mergedObject = mergeWithKeys(['event', event], ['alert', alert], ['user', userObj]);

也可以利用Object.fromEntries简化函数逻辑:

function mergeWithKeys(...entries) {
  return Object.fromEntries(entries);
}

3. ES6 对象扩展语法(可选浅拷贝)

如果运行环境支持ES6,还可以用对象扩展语法实现,这种方式还能对原对象做浅拷贝(避免后续修改原对象影响合并后的对象):

var mergedObject = {
  event: {...event},
  alert: {...alert}
};

如果不需要拷贝原对象,直接赋值原对象即可:event: event。

以上方法最终都能生成你期望的结构:

var mergedObject = 
 { event :
    { id   : '45243'
    , name : 'Cardiff locè'
    , loc  : 'Cardiff'
    }
 , alert:
    { node     : 'sdwan edge'
    , severity : 'critical'
    }
 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:06:17