tech::hexagram

personal note for technical issue.

Javascriptで連想配列のDeepCopy

Object.assign を実装当初利用したものの、Safariでは9以上でないと動かないらしい。

jQuery$.extend を利用するとオブジェクトのマージという形でDeepCopyが出来る。

var src = fetchSrc(); // 何かしらで取ってくる
var dest = {};
$.extend(true, dest, src);

上記の用に記述すると destsrc連想配列がマージされる。 dest 自体はもともと空の連想配列なので、実質 src のDeepCopyとなる。 第一引数に true を渡すと再帰的に階層を渡ってマージするので基本的には true を渡しておいたほうが良さそう。