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

news/2024/12/22 9:05:12/文章来源:https://www.cnblogs.com/ai888/p/18621693

在前端开发中,合并多个对象通常意味着将多个对象的属性合并到一个新的对象中。这可以通过多种方式实现,具体取决于你的需求和使用的技术栈。以下是一个简单的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循环遍历它们。对于每个对象,它遍历该对象的属性,并根据需要进行合并。如果两个对象具有相同的属性,并且该属性的值都是对象,则进行深度合并。否则,新对象的属性值将被设置为当前遍历到的对象的属性值。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856666.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正确停止Oracle expdp/impdp作业操作方法

1、使用命令查看在运行的作业名称,找到STATE是EXECUTING的作业名称。 select job_name,state from dba_datapump_jobs; 2、再CMD命令窗口,键入以下命令,等号后面是要结束的任务名称,前面是数据库连接信息,注意 \"是转义符合不能省略 expdp \"his/Funk360@orcl\&…

读图数据库实战笔记10图分析

图分析1. 图分析 1.1. 图分析和机器学习(ML)是进一步探索图时要探索的两个最常见领域 1.2. 寻路1.2.1. 每一个特定的寻路算法的工作原理都略有不同,并且各有优缺点1.2.2. 测向1.2.2.1. 地理制图工具使用寻路算法的一些变体来提供方向1.2.3. 优化问题1.2.3.1. 寻路算法可以优…

dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用

本文将和大家简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用和代表的含义熟悉文本排版的伙伴也许对于字体的 Metrics 概念不陌生,在 Skia 里面提供的 SKFontMetrics 就包含了从字体信息里面所获取的多项信息。只是略微有所不同的是 Skia 多加了对字体大小的加工,即 SKFont…

LVGL 移植到 STM32 通法 ( 例:LVGL 9.2.2 到 STM32F429 )

心法: 以往看过很多的移植教程、在 Keil 里面添加很多的文件分组、进到 LVGL 源码文件夹,进进出出多级目录添加很多的源码文件、这个添加,那个不需要添加,着实吓人 + 劝退人。1. Keil 里面的文件分组的 组织结构、取名对编译根本不重要,只是方便程序员管理文件。 不过要注…

使用CSS3写一个图片左右切换的弹性动画

要使用CSS3创建一个图片左右切换的弹性动画,你可以使用@keyframes来定义动画,并利用animation属性将其应用到元素上。以下是一个简单的示例,展示了如何实现这样的动画效果:HTML:<!DOCTYPE html> <html lang="en"> <head><meta charset=&quo…

使用html画一个音乐播放器的布局

以下是一个简单的音乐播放器布局示例,使用HTML和CSS实现: <!DOCTYPE html> <html> <head><title>音乐播放器</title><style>/* 样式设置 */body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 0;}.pla…

散热器比较:东海X5 vs 利民AK120SE vs 玄冰500

目录起因测试环境关于测试记录塔体外观AIDA64烤机测试东海X5利民AK120SE玄冰500待机测试东海X5利民AK120SE玄冰500噪音(主管感受)总结 起因 升级电脑,找朋友弄来了淘汰的机箱电源主板啥的,加上自己淘汰的cpu显卡,配成另一台电脑作他用 风扇也放旧电脑用了,因此要买个新风…

3DGStream:3D飞行训练实现照片级逼真自由视点视频的高效流式传输

3DGStream:3D飞行训练实现照片级逼真自由视点视频的高效流式传输 5.13.1 3DGStream:3D飞行训练实现照片级逼真自由视点视频的高效流式传输概述 从多视图视频构建动态场景的逼真自由视点视频(FVV)仍然是一项具有挑战性的工作。尽管当前的神经渲染技术取得了显著进步,但这些…

利用协同嵌入模型超越多任务密集预测

利用协同嵌入模型超越多任务密集预测 5.7.1 利用协同嵌入模型超越多任务密集预测概述 多任务视觉场景理解旨在利用一组相关任务之间的关系,通过将它们嵌入到一个统一的网络中来同时解决这些问题。然而,从任务层面的角度来看,大多数现有方法都引起了两个主要问题:①不同任务…

事件流超分辨率的双边事件挖掘与互补

事件流超分辨率的双边事件挖掘与互补 5.6.1事件流超分辨率的双边事件挖掘与互补概述 事件流超分辨率(ESR)旨在解决事件流中空间分辨率不足的挑战,这对事件相机在复杂场景中的应用具有重要意义。以前的ESR工作通常以混合范式处理积极和消极事件。这种范式限制了他们有效地模拟…

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新…

【甲方安全】金融行业+安全架构(三)

第一部分 安全架构第三章 安全规划3.1 规划前的思考3.2 规划框架3.3 制订步骤3.3.1 调研3.3.2 目标、现状和差距3.3.3 制订解决方案3.3.4 定稿3.3.5 上层汇报3.3.6 执行与回顾3.4 注意事项3.5 小结《企业安全建设指南 金融行业安全架构与技术实践》——聂君 李燕 何扬军 编著,…