[解決済み] 多次元配列の参照ではなく、コピーを作成する - JavaScript [duplicate].
2023-02-22 04:55:31
質問
これは、"deep copying"とも呼ばれ、いくつかの記事を見つけました。一番近いのは これ ですが、これはjQueryのためのものです。
というようなことが可能だということも、2か所で見かけました。
arr2 = JSON.decode(JSON.encode(arr1));
しかし、それは明らかに非効率的です。ループして各値を個別にコピーし、すべての配列を再帰的に処理することも可能です。それも疲れるし非効率的な気がする。
では、JavaScript の多次元配列をコピーする最も効率的でライブラリに依存しない方法は何でしょうか?
[[a],[b],[c]]
? 必要であれば、私は "non-IE" メソッドに完全に満足しています。
ありがとうございます。
どのように解決するのですか?
配列の配列を未知の深さまで扱っているようですが、いつでも1つの深さまでしか扱う必要がないので、シンプルで高速な方法として
.slice()
.
var newArray = [];
for (var i = 0; i < currentArray.length; i++)
newArray[i] = currentArray[i].slice();
あるいは
.map()
の代わりに
for
ループの代わりに
var newArray = currentArray.map(function(arr) {
return arr.slice();
});
つまり、これは現在のArrayを繰り返し、ネストされたArrayの浅いコピーで新しいArrayを構築しています。そして、次のレベルの深さに行くとき、同じことをすることになります。
もちろん、Arrayと他のデータが混在している場合は、スライスする前にそれが何であるかをテストしたいと思うでしょう。
関連
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JavaScriptで配列を空にするにはどうしたらいいですか?
-
[解決済み] 配列を値でコピーする
-
[解決済み] JavaScriptで2次元の配列を作成するにはどうすればよいですか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み】(深い)jQueryで配列をコピーする【重複
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] これは純関数ですか?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法