JavaScriptにおけるディープコピーの方法と使用例


ディープコピーを実現するためには、以下の方法があります。

  1. スプレッド演算子を使用する方法: スプレッド演算子を使用すると、オブジェクトや配列を浅いコピーではなく、ディープコピーすることができます。

    const originalObject = { name: 'John', age: 30 };
    const deepCopyObject = { ...originalObject };
    
    originalObject.name = 'Jane';
    
    console.log(originalObject);      // { name: 'Jane', age: 30 }
    console.log(deepCopyObject);      // { name: 'John', age: 30 }
  2. JSON.stringifyとJSON.parseを使用する方法: JSON.stringifyを使用してオブジェクトや配列を文字列に変換し、JSON.parseを使用して文字列をオブジェクトや配列に戻すことで、ディープコピーを実現することができます。

    const originalArray = [1, 2, 3, [4, 5]];
    const deepCopyArray = JSON.parse(JSON.stringify(originalArray));
    
    originalArray[0] = 10;
    originalArray[3][0] = 40;
    
    console.log(originalArray);       // [10, 2, 3, [40, 5]]
    console.log(deepCopyArray);       // [1, 2, 3, [4, 5]]

これらの方法を使用することで、オブジェクトや配列のディープコピーを行うことができます。ただし、注意点としては、ディープコピーを行う際には、コピー元のオブジェクトや配列内部にさらにネストされたオブジェクトや配列がある場合でも、それらも再帰的にディープコピーする必要があります。