我可以像这样合并多个对象:
var a = {k:{i:1, j:2}, m:6}
var b = {k:{i:3, l:4}}
var c = {
...a,
...b
}
c
的{{1}}很好;但是,c不包含m:6
。这是因为k.j:2
进行了浅覆盖。
我想递归使用...b
,以使...
中不在的嵌套属性不会被覆盖。
我喜欢b
,因为它看上去如此快速干净。我可以在...
的对象初始值设定项中这样做吗?
更新
我到目前为止已经很近了,但是似乎有点冗长:
c
答案 0 :(得分:2)
使用...
是不可能的。如果您事先知道对象的形状,尽管可以这样写:
var a = {k:{i:1, j:2}, m:6}
var b = {k:{i:3, l:4}}
var c = {
...a,
...b,
k: { ...a.k, ...b.k },
}
否则,您将需要编写一个函数来执行此操作或搜索一个函数:https://www.npmjs.com/search?q=merge+deep