No.102
【Javascript】配列のディープコピー
配列を参照ではなく複製したい
Javascriptで配列をコピーするとき、ついやってしまうのが参照渡しをしてしまうこと。
var fuga = hoge;
これだとfugaを操作するとhogeまで操作されてしまい都合が悪いこともある。
理由は単純でJavascriptの=
は参照渡し
だから。ポインタ渡してるようなもん。というわけで、ディープコピーするときは一工夫必要になる。
簡単なのはjQueryのextend
メソッドを利用する方法。jQuery利用は一般的だし、たいてい問題ないだろう。
var fuga = $.extend(true, [], hoge);
もちろんJavascriptでもディープコピーは可能だけど自分で関数(処理)を作らないといけない。下記のような方法だと多元配列の時には使えないので注意。
var fuga = hoge.slice();