1. JSON変換を使用する
これが最も簡単な方法です。
JSON.parse(JSON.stringify(obj))
2. 再帰を使用する
オブジェクトは再帰的に走査され、各プロパティの値がコピーされます。コピーされたオブジェクトが値型である場合と、プロパティ値にオブジェクトが含まれている場合を処理する必要があります。循環参照による無限ループの発生を防ぐためには、走査されたオブジェクトを記録する必要があることに注意してください。
const deepClone = obj => {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let result = Array.isArray(obj) ? [] : {
};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key]);
}
}
return result;
}
3. プラグインを利用する
ロダッシュ
Lodash
これは、一貫性のあるモジュール式の高性能JavaScript
ユーティリティ ライブラリです。
npm i --save lodash
import {
cloneDeep} from 'lodash';
const obj1 = {
a: {
b: 2}};
const obj2 = cloneDeep(obj1);
終わり