No.102


【Javascript】配列のディープコピー

配列を参照ではなく複製したい

 Javascriptで配列をコピーするとき、ついやってしまうのが参照渡しをしてしまうこと。

var fuga = hoge;

 これだとfugaを操作するとhogeまで操作されてしまい都合が悪いこともある。

 理由は単純でJavascriptの=参照渡しだから。ポインタ渡してるようなもん。というわけで、ディープコピーするときは一工夫必要になる。

 簡単なのはjQueryのextendメソッドを利用する方法。jQuery利用は一般的だし、たいてい問題ないだろう。

var fuga = $.extend(true, [], hoge);

 もちろんJavascriptでもディープコピーは可能だけど自分で関数(処理)を作らないといけない。下記のような方法だと多元配列の時には使えないので注意。

var fuga = hoge.slice();