首页 > 其他分享 >写一个方法将多个对象进行合并

写一个方法将多个对象进行合并

时间:2024-12-22 09:11:35浏览次数:3  
标签:obj 多个 对象 合并 key merged 属性

在前端开发中,合并多个对象通常意味着将多个对象的属性合并到一个新的对象中。这可以通过多种方式实现,具体取决于你的需求和使用的技术栈。以下是一个简单的JavaScript示例,展示了如何合并多个对象:

function mergeObjects(...objects) {
  // 创建一个空对象来存储合并后的属性
  const merged = {};

  // 遍历传入的对象数组
  objects.forEach(obj => {
    // 确保当前项是对象,并且不是null(typeof null 会返回 "object")
    if (obj && typeof obj === 'object') {
      // 遍历当前对象的属性
      Object.keys(obj).forEach(key => {
        // 如果合并后的对象已经包含这个属性,并且这个属性的值也是一个对象,
        // 那么进行深度合并,否则直接赋值
        if (merged[key] && typeof merged[key] === 'object' && typeof obj[key] === 'object') {
          merged[key] = mergeObjects(merged[key], obj[key]);
        } else {
          merged[key] = obj[key];
        }
      });
    }
  });

  // 返回合并后的对象
  return merged;
}

// 示例用法
const obj1 = { a: 1, b: { c: 3 } };
const obj2 = { b: { d: 4 }, e: 5 };
const mergedObj = mergeObjects(obj1, obj2);
console.log(mergedObj); // 输出:{ a: 1, b: { c: 3, d: 4 }, e: 5 }

这个方法接受任意数量的对象作为参数,并使用forEach循环遍历它们。对于每个对象,它遍历该对象的属性,并根据需要进行合并。如果两个对象具有相同的属性,并且该属性的值都是对象,则进行深度合并。否则,新对象的属性值将被设置为当前遍历到的对象的属性值。

请注意,这个示例中的合并是浅合并和深度合并的结合。对于非对象类型的属性值,它执行浅合并(即直接赋值)。对于对象类型的属性值,它执行深度合并(即递归地合并对象的属性)。这可以确保嵌套的对象也被正确地合并。

标签:obj,多个,对象,合并,key,merged,属性
From: https://www.cnblogs.com/ai888/p/18621693

相关文章

  • COM(Component Object Model)接口是微软推出的一种用于软件组件间通信的技术,它允许不同
    COM(ComponentObjectModel)接口是微软推出的一种用于软件组件间通信的技术,它允许不同编程语言(如C++,C#,VB等)之间的对象进行交互。COM的核心概念包括接口、代理、类、类型库等,它广泛应用于Windows操作系统中。接下来我将详细介绍这些概念及它们在Windows运行时中的应用。1. COM......
  • C++ 面向对象编程:友元、
    友元:让一个类或函数,能够访问另一个类的私有成员。友元关键字为friend。友元有三种:第一种是全局函数作为友元,第二种是类作为友元,第三种是成员函数作为友元第一种是全局函数作为友元,见以下代码:#include<iostream>#include<string>usingnamespacestd;classPeople{  ......
  • 【Web】0基础学Web—随机颜色、数学对象、日期及方法、定时器、倒计时
    0基础学Web—随机颜色、数学对象、日期及方法、定时器、倒计时随机颜色数学对象日期及方法定时器倒计时cssjs随机颜色点击div时,随机改变div背景颜色<body><divclass="wrapper"onclick="changebgColor()"></div><script>//改变背景颜色......
  • 面向对象分析建模(尊享版)
    基于用例的面向对象分析方法 1、建立类和对象2、建立对象-行为模型3、建立对象-关系模型回顾需求阶段产生的用例规约,补充必要的详细信息;研究用例的事件流,将用例的职责分配给若干分析类;基于这些职责分配以及分析类之间的协作,即可开始为分析类间的关系建模了一旦分析了用......
  • Javascript 对象讲解
    Array(数组)类似于java的集合.创建数组letfruits=['apple','banana','orange'];//直接创建letnumbers=newArray(1,2,3,4,5);//使用Array()创建空数组:letemptyArray=newArray();数组的属性和方法length:数组元素的个数。数组的长度,类型可变.......
  • 88. 合并两个有序数组
    合并两个有序数组给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对......
  • 将相同的PanelPartcode对象合并
    具有相同PanelPartcode的对象被合并,并且它们的PartCodes属性用逗号连接。methods:{mergeObjects(){constmergedArray=[];consttemObj={};this.array.forEach(item=>{constcode=item.PanelPartcode;if(!temObj[code]){......
  • jsp中的4大域对象。
    这4个对象,都可以保存数据,但是他们保存的周期不同。pageContext:当前页面有效。request:同一个请求。session:同一个会话。application:同一个应用服务器。他们都有setAttribute()保存数据,getAttribute()获取数据。removeAttribute移除数据。a.jsp<%////respon......
  • 在Excel中如果制作可以自动填充的序号,删除或者合并单元也可用
        大家好,我是小鱼。在日常的办公中有时需要制作带序号的表格,这样可以通过序号来直观地看到有多少条信息,但是如果普通的批量添加序号的话,一旦我们删除或者合并某几行数据,前面的序号不会自动更新,序号显示的数据也就不是真实的信息个数,如下图所示那么,在Excel中如果制作......
  • 合并两个有序链表(迭代)
    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]思路:首先,我们设定一个哨兵节......