P粉7953113212023-08-21 11:38:17
JavaScript では、ディープ コピー テクノロジは配列内の要素に依存します。ここから始めましょう。
要素には、リテラル値、リテラル構造、またはプロトタイプを指定できます。
リーリーこれらの要素から、3 種類の配列を作成できます。
リーリー配列内の要素のタイプに応じて、さまざまな手法を使用してディープ コピーを実行できます。
https://www.measurethat.net/Benchmarks/Show/17502/0/deep-copy-comparison
リテラル配列 (タイプ 1)
[ ...myArray ]
、myArray.splice(0)
、myArray.slice()
、および myArray.concat()# を使用できます。 # # リテラル値 (ブール値、数値、文字列) のみを含む配列をディープ コピーする手法。その中でも、Chrome では
slice() が最もパフォーマンスが高く、Firefox ではスプレッド演算子
. .. が最も高いパフォーマンスを発揮します。
リテラル値配列 (タイプ 1) およびリテラル構造配列 (タイプ 2)
JSON.parse(JSON.stringify(myArray)) テクノロジーを使用すると、リテラル値 (ブール値、数値、文字列) とリテラル構造 (配列、オブジェクト) をディープ コピーできますが、プロトタイプ オブジェクトはディープ コピーできません。コピーされました。
すべての配列 (タイプ 1、タイプ 2、タイプ 3)
jQuery
の extend(true, [], myArray)# を使用できます。 ## テクノロジー すべてのタイプの配列をディープ コピーします。その中でも、Lodash の cloneDeep() は技術的なパフォーマンスが最も優れています。
サードパーティ ライブラリの使用を避けている人のために、次のカスタム関数は、
cloneDeep()
リーリー