[JavaScript] Object.assignでネストされたオブジェクトがコピーされない問題

理由

const target = Object.assign({}, obj);

Object.assignは、ディープコピーではなく、シャローコピーのため下階層のオブジェクトはコピーされない。

解決方法

汎用的な対応は自前で実装するのはコストが高いのでライブラリを使用する。(自前の実装で解決できるレベルのネストであれば、ループなどで代入していくと良いと思う)

使用ライブラリ

ディープコピーに関するライブラリはいくつか存在する。

この中でもパフォーマンスの高いらしいfast-copyを利用する。


import copy from "fast-copy";

const obj = {
  nested: {
    foo: true,
    bar: false,
  },
};

const target = copy(obj),