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
相关产品推荐
相关产品推荐

