[JS]浅い放射線、深い放射線


既存のデータをエンコードする場合は、元のデータを変更しないでください.
主に電子演算子を用いてデータをコピーする方法を用いた.
const test = [1, 2];
const copy = [...test];

test === copy; // false
  • testとcopyのアドレスが異なるため、copyの値を変更しても元のデータであるtestは変更されません.
  • でも、深さが深いほど、
    他のJavaScriptレプリケーション方法を使用すると、元のデータが変更されます.
  • testとcopyには、アドレスが異なるため、関連はありません.
  • ですが、深さがもっと高い場合(test.a©.a)、同じ参照値が表示されます.
    copy.aの値を変更する場合test.aの値も変わります.(元のデータが変更されました)
  • ふかほうしゃ


    これらの問題を解決するためには、完全な深さレプリケーションが必要です.

    1. JSON.parse & JSON.stringify

    const test = [1, 2];
    const copy = JSON.parse(JSON.stringify(test));

    に質問

  • JSONのデータが多ければ多いほど、パフォーマンスが悪くなります.
  • オブジェクト、Array、Number、String、True、False、Nullを除き、JSON値は受け入れられません.
  • で新しく導入されたBigIntの場合、エラーが発生します.
  • 2.LodashやRamdaなどのライブラリを利用する


    n/a.結論

  • 1深度では、JavaScriptメソッド(spread演算子、sliceなど)を使用してコピーできます.
  • 深さが
  • 2より大きい場合は、JSONまたはライブラリを使用してコピーします.
  • の深さレプリケーションが必要かどうかは、各項目で考慮する必要があります.