素肌にサスペンダー

個人的な備忘と日記

【JavaScript】objectをdeep copyする方法

もとのobjectは変更せずコピーして利用したい場合、JSON.parse(JSON.stringify())でうまくいった。

const obj = { a: 0 } 

const newObj = JSON.parse(JSON.stringify(obj))
newObj.a = 1;

console.log(newObj) // {a: 1}
console.log(obj) // {a: 0} ←もとのobjはもとのまま

Object.assign()だと元のが書き変わってしまう。 (ReactのuseStateでも、set〇〇しなくても書き変わったので特に注意。)

const obj = { a: 0 } 

const newObj = Object.assign(json)
newObj.a = 1;

console.log(newObj) // {a: 1}
console.log(obj) // {a: 1} ←もとのも書き変わってしまう