JavaScript Deepmerge2025年2月15日 | 阅读 6 分钟 概述在处理 API 调用、处理数据或开发常规程序时,JavaScript 对象常需要将两个或多个对象合并为一个。了解如何合并对象非常有用。 合并两个事物为一个整体就是合并。结果可以被覆盖为现有实体,或者存储为新的实体。同样,我们可以将两个对象的多个属性合并为一个整体,并使用 JavaScript 通过合并它们来对它进行必要的运算。 但是,这如何实现呢?基本的 JavaScript 对象由一组键值对表示,用逗号分隔。集合中的每个键都有一个匹配的值。现在,当我们尝试合并两个对象时,这两个对象的属性都会被合并并保存在一个父对象中。听起来够简单了吧?请再耐心一点。好的,我们已经将两个对象合并成了一个单一的实体。但是,如果两个键是相同的,会发生什么呢?在这种情况下应该发生什么?这时,深入理解浅合并和深合并就变得很重要了。现在,让我们尝试通过一些例子来理解它。 如何合并两个 JavaScript 对象使用扩展运算符(...)合并对象JavaScript 中的扩展运算符是内置的,可用于合并两个 JavaScript 对象。它将传递给它的可迭代结构(如数组、对象等)展开为单独的元素。此外,这使得我们的代码更具可读性和简洁性。 扩展运算符通常用于创建 JavaScript 对象的浅拷贝。在后面的部分,我们将详细介绍什么是浅拷贝。但目前,让我们这样理解:当使用扩展 (...) 运算符合并两个对象时,如果一个或多个键相同,则会覆盖前一个值。 代码输出 ![]() 使用 Object.assign() 方法合并对象我们可以使用预定义的 Object.assign() 函数来合并两个 JavaScript 对象。它返回一个单一的对象,其中包含了源对象的所有可枚举属性的副本。 其写法如下: 语法 在下面的示例中,我们已将一个空对象用作 Object.assign() 函数的第一个参数,因为我们希望返回一个空对象,该对象包含本例中 obj1 和 obj2 的所有源的最终值。 或者,我们可以将该特定对象作为第一个参数传递,并实现将所有源对象合并到当前对象的目标。 代码输出 ![]() 浅合并浅合并是 JavaScript 中一种合并技术。它合并两个 JS 对象,但有一个诀窍:如果我们进行浅合并,并且两个对象都具有同名的键,则后一个对象的值将替换前一个对象的值。它会完全替换它,而不确定被指向的项目是否是嵌套的或具有具有不同键的子对象。 为了更好地理解这一点,让我们看一个例子。 代码输出 ![]() 在这里,我们可以看到键 num2 同时存在于 obj1 和 obj2 中,并且当我们对它们进行浅合并时,最初表示 num2 初始值的对象被替换为一个表示键 num2 的 obj2 初始值的对象。 深合并与浅合并相比,深合并通过遍历嵌套对象(如果有)来进行深度合并。当我们进行深合并时,如果两个键相同,它不会立即更改值,而是首先检查对象是否是嵌套的,然后继续直到达到键的基本级别。如果它发现两个相同的键并且没有嵌套子项,它会替换它们;否则,它会将子键连接到父对象中的相应位置。让我们用一个例子来解释。 代码输出 ![]() 在这个例子中,我们可以看到,在深合并 object1 和 object2 时,整个对象并没有被直接覆盖;相反,它首先进入嵌套对象,查找相同的键,并且因为在基本级别没有相同的键,所以将它们连接到父对象中的适当位置。 使用自定义函数合并对象此外,我们还可以创建自己的 JavaScript 方法来合并两个对象。 代码输出 ![]() 说明 在这里,我们首先初始化 object1 和 object2,然后调用 merge() 函数,并将新创建的对象作为参数传入。在 merge() 函数中,我们使用扩展运算符来接收参数,并创建一个空对象来保存合并后的部分。在那里,我们使用一个名为 merger() 的内部过程来合并提供的项。它接受一个对象作为输入并遍历其组件。然后,我们进行条件检查以确定提供的对象是否具有属性;如果是,则将该元素分配给目标空对象,然后重复此过程,直到整个对象被迭代。完成后,我们返回目标对象并打印它。 Lodash merge() 方法为了合并两个 JavaScript 对象,我们可以使用 lodash 库的 merge() 方法。 输出 ![]() 说明 在这个例子中,我们使用 lodash 库的 _.merge() 函数来合并两个对象;它会递归地将源对象的属性合并到目标对象中。即使键相同,值也会被连接而不是被覆盖。使用此 JavaScript 美化器来增强代码的外观。 结论
下一个主题Javascript-delay |
D3.js 简介 Data-Driven Documents 或 D3.js 是 Mike Bostock 创建的 JavaScript 包,用于使用 CSS、HTML、SVG 等进行可视化。这是最有用、最适应性强且非常强大的复杂数据可视化工具。D3.js 库主要……
阅读 15 分钟
在本篇文章中,我们将了解如何在 JavaScript 对象中获取键值。我们将了解如何获取键、如何获取值以及如何从 JavaScript 对象中获取键值对。获取 JavaScript 对象的键有多种方法...
阅读 4 分钟
JavaScript 箭头函数没有“this”值或任何参数。不建议将其用作事件处理程序、对象字面量方法或原型方法。如果函数应用了 arguments 对象,则箭头函数无法正常工作。的...
阅读 4 分钟
在 JavaScript 中,操作字符串和文本是开发人员的常见任务。处理文本的一个基本方面是管理换行符。无论您是处理用户输入、来自 API 的数据还是生成动态内容,理解如何插入、删除或操作换行符都至关重要....
阅读 10 分钟
什么是 JavaScript? JavaScript 是一种功能强大且流行的编程语言,在 Web 开发方面有广泛的应用。它使开发人员能够为网页设计动态和交互式内容,以提供无缝的用户体验。什么是数组? 数组是一个...
阅读 4 分钟
Web 开发人员大部分时间使用 JavaScript 这种动态且适应性强的编程语言来创建动态和交互式 UI。数据操作是其众多亮点之一,而根据特定标准对元素进行分组是数据操作中的常规活动之一。这是...
5 分钟阅读
简介:jQuery AJAX(Asynchronous JavaScript and XML)是用于向服务器发出异步请求的强大且广泛使用的工具。jQuery AJAX 的关键要素之一是能够指示在 AJAX 的不同阶段执行不同的回调函数...
阅读 4 分钟
JavaScript 是一种高级且通用的编程语言,主要用于 Web 开发。它随着时间的推移变得越来越强大,最终成为一种足够强大的复杂编程语言,可以驱动功能齐全的应用程序。本文深入探讨了前 10 个用途...
阅读9分钟
Bun 旨在集打包器、包管理和高性能运行时于一体。其架构利用了人机界面和 JavaScript 引擎的最新趋势,以实现高质量的速度提升。Bun 基本上基于 Safari 驱动的 JavaScriptCore 引擎 (JSC)。Bun 的...
阅读 12 分钟
优化是 Web 开发的重要组成部分,它会同时影响网站和应用程序的功能以及用户体验。最小化是提高网站性能的关键技术,尤其是在涉及 JavaScript (JS) 代码时。JavaScript 是...的关键部分。
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India