删除嵌套键时,对象不会发生变异

时间:2018-01-28 10:36:07

标签: node.js

我正在使用redux,然后我需要能够从对象中删除一个键而不会改变它。

但是当从克隆中删除 netsed 键时,原始对象也会发生变异。像这样:

let t1 = {a: { a1: 'test' }}
let t2 = Object.assign({}, t1}
delete t2['a']['a1']
t2 // { a: {} } // ok.
t1 // { a: {} } // Not ok !

任何提示?

1 个答案:

答案 0 :(得分:0)

好的。我错过了Shallow / deep copy的区别。

所以现在,我最终得到:

let t1 = { a: { a1: 'test'}}
let t2 = JSON.parse(JSON.stringify(t1))
delete t2['a']['a1']
t2 // { a: {} }
t1 // { a: { a1: 'test' } }