1. ホーム
  2. ジャバスクリプト

[解決済み】(深い)jQueryで配列をコピーする【重複

2022-04-04 23:18:10

質問

<ブロッククオート

重複の可能性があります。

JavaScriptのオブジェクトをクローンする最も効率的な方法は何ですか?

オブジェクトの(順序付き、連想でない)配列をコピーする必要があります。私はjQueryを使用しています。私は最初、以下を試しました。

jquery.extend({}, myArray)

しかし当然ながら、これでは配列が必要なところをオブジェクトで返してしまいます (ちなみに jquery.extend は本当に大好きです)。

では、配列をコピーするのに最適な方法は何でしょうか?

どのように解決するのですか?

Array.slice()は深いコピーを行わないので、多次元配列には適しません。

var a =[[1], [2], [3]];
var b = a.slice();

b.shift().shift();
// a is now [[], [2], [3]]

なお、ここでは shift().shift() 上記、ポイントはあくまで b[0][0] へのポインタが含まれています。 a[0][0] は値ではなく

同様に delete(b[0][0]) も引き起こす。 a[0][0] が削除され b[0][0]=99 の値も変更します。 a[0][0] を99にする。

jQueryの extend メソッド が行います。 は、初期引数として真の値が渡された場合、ディープコピーを実行します。

var a =[[1], [2], [3]];
var b = $.extend(true, [], a);

b.shift().shift();
// a is still [[1], [2], [3]]