Meaningless Notebook

我輩は雑記帖である。名はまだない。


JavaScript あるある。

JavaScript (TypeScript) とかでオブジェクトリテラルを上書きしたい時とかが私にも結構あってスプレッド構文で上書きしたりしてた。

const value  = { a: 1, b: 2 };
const merged = { ...value, b: 3 };

大体はこれでいいんだけど、オリジナルのオブジェクトとは完全に切り離したい (ディ-プコピ-したい) 時 (b が配列の時とか…) とが稀にあった。

ググると JSON.stringify 使った奴がよく出てきてたんだけど個人的には、なんかやりたくなくて lodash の _.cloneDeep に逃げてた。

逃げてたけど、最近 ? の JavaScript は標準機能で行けるらしい。

const value = { a: 1, b: [2, 3] };
const clone = structuredClone(value);

clone['b'].push(4);

これで value の b は [2, 3] 、clone の b は [2, 3, 4] といった感じでディ-プコピ-されるらしい。

正直大半のケ-スはスプレッド構文でなんとかなる気がするけど覚えておいても損はなさそう、てかないと思った。

まぁ structuredClone は基本的なものはディ-プコピ-できるけど複雑 ? な奴は出来ないらしいからやっぱり lodash 使おうってケ-スもあるのかもしれない、知らんけど。

参考元