百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
D

deepmerge

> 编程语言
开源

一个用于深度(递归)合并 JavaScript 对象的库

2.8K stars0 点赞3 次浏览
访问官网GitHub

工具介绍

一个用于深度(递归)合并 JavaScript 对象的库

deepmerge

深度合并两个或多个对象的可枚举属性。

UMD 打包后压缩并gzip后大小为723B

快速开始

使用示例

javascript
const x = {
	foo: { bar: 3 },
	array: [{
		does: 'work',
		too: [ 1, 2, 3 ]
	}]
}

const y = {
	foo: { baz: 4 },
	quux: 5,
	array: [{
		does: 'work',
		too: [ 4, 5, 6 ]
	}, {
		really: 'yes'
	}]
}

const output = {
	foo: {
		bar: 3,
		baz: 4
	},
	array: [{
		does: 'work',
		too: [ 1, 2, 3 ]
	}, {
		does: 'work',
		too: [ 4, 5, 6 ]
	}, {
		really: 'yes'
	}],
	quux: 5
}

merge(x, y) // => output

安装

使用 npm 执行:

bash
npm install deepmerge

deepmerge 也可以直接在浏览器中使用,无需包管理器或打包工具:来自 unpkg.com 的 UMD 版本。

引入

deepmerge 提供了一个 CommonJS 入口点:

const merge = require('deepmerge')

由于 Webpack 的 bug,ESM 入口点已被移除。

API

merge(x, y, [options])

深度合并两个对象 x 和 y,返回一个新的合并对象,其中包含来自 x 和 y 的元素。

如果 x 和 y 中同时存在相同键的元素,则结果中会显示 y 的值。

合并会创建一个新对象,因此 x 或 y 都不会被修改。

注意: 默认情况下,数组通过拼接进行合并。

merge.all(arrayOfObjects, [options])

将任意数量的对象合并为一个结果对象。

javascript
const foobar = { foo: { bar: 3 } }
const foobaz = { foo: { baz: 4 } }
const bar = { bar: 'yay!' }

merge.all([ foobar, foobaz, bar ]) // => { foo: { bar: 3, baz: 4 }, bar: 'yay!' }

选项

arrayMerge

合并两个数组有多种方式,以下是一些示例,但您也可以创建自己的自定义函数。

您的 arrayMerge 函数将被调用,并传入三个参数:一个 target 数组、source 数组,以及一个包含以下属性的 options 对象:

  • isMergeableObject(value)
  • cloneUnlessOtherwiseSpecified(value, options)

arrayMerge 示例: 覆盖目标数组

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

JavaScript

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言