一尘不染

JavaScript如何深层合并而不是浅层合并?

javascript

无论Object.assign和对象传播只能做一浅合并。

问题的一个示例:

// No object nesting
const x = { a: 1 }
const y = { b: 1 }
const z = { ...x, ...y } // { a: 1, b: 1 }

输出是您期望的。但是,如果我尝试这样做:

// Object nesting
const x = { a: { a: 1 } }
const y = { a: { b: 1 } }
const z = { ...x, ...y } // { a: { b: 1 } }

代替

{ a: { a: 1, b: 1 } }

你得到

{ a: { b: 1 } }

x完全被覆盖,因为传播语法仅深入了一层。与相同Object.assign()

有没有办法做到这一点?


阅读 965

收藏
2020-04-25

共1个答案

一尘不染

有人知道ES6 / ES7规范中是否存在深度合并?

不,不是的。

2020-04-25