Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
啊嘞嘞EC
vue-vben-admin
提交
4c63b1ab
V
vue-vben-admin
项目概览
啊嘞嘞EC
/
vue-vben-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-vben-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
4c63b1ab
编写于
3月 28, 2023
作者:
K
Kirk Lin
提交者:
GitHub
3月 28, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: deepMerge (#2649)
上级
5d8d9786
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
10 deletion
+21
-10
src/utils/index.ts
src/utils/index.ts
+21
-10
未找到文件。
src/utils/index.ts
浏览文件 @
4c63b1ab
...
...
@@ -2,8 +2,8 @@ import type { RouteLocationNormalized, RouteRecordNormalized } from 'vue-router'
import
type
{
App
,
Component
}
from
'
vue
'
;
import
{
unref
}
from
'
vue
'
;
import
{
isObject
}
from
'
/@/utils/is
'
;
import
{
cloneDeep
}
from
'
lodash-es
'
;
import
{
is
Array
,
is
Object
}
from
'
/@/utils/is
'
;
import
{
cloneDeep
,
mergeWith
}
from
'
lodash-es
'
;
export
const
noop
=
()
=>
{};
...
...
@@ -33,14 +33,25 @@ export function setObjToUrlParams(baseUrl: string, obj: any): string {
return
/
\?
$/
.
test
(
baseUrl
)
?
baseUrl
+
parameters
:
baseUrl
.
replace
(
/
\/?
$/
,
'
?
'
)
+
parameters
;
}
// 深度合并
export
function
deepMerge
<
T
=
any
>
(
src
:
any
=
{},
target
:
any
=
{}):
T
{
let
key
:
string
;
const
res
:
any
=
cloneDeep
(
src
);
for
(
key
in
target
)
{
res
[
key
]
=
isObject
(
res
[
key
])
?
deepMerge
(
res
[
key
],
target
[
key
])
:
target
[
key
];
}
return
res
;
/**
递归合并两个对象。
Recursively merge two objects.
@param target 目标对象,合并后结果存放于此。The target object to merge into.
@param source 要合并的源对象。The source object to merge from.
@returns 合并后的对象。The merged object.
*/
export
function
deepMerge
<
T
extends
object
|
null
|
undefined
,
U
extends
object
|
null
|
undefined
>
(
target
:
T
,
source
:
U
,
):
T
&
U
{
return
mergeWith
(
cloneDeep
(
target
),
source
,
(
objValue
,
srcValue
)
=>
{
if
(
isObject
(
objValue
)
&&
isObject
(
srcValue
))
{
return
mergeWith
(
cloneDeep
(
objValue
),
srcValue
,
(
prevValue
,
nextValue
)
=>
{
return
isArray
(
prevValue
)
?
prevValue
.
concat
(
nextValue
)
:
undefined
;
});
}
});
}
export
function
openWindow
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录