Javascriptで連想配列のDeepCopy
Object.assign を実装当初利用したものの、Safariでは9以上でないと動かないらしい。
jQueryの $.extend
を利用するとオブジェクトのマージという形でDeepCopyが出来る。
var src = fetchSrc(); // 何かしらで取ってくる var dest = {}; $.extend(true, dest, src);
上記の用に記述すると dest
に src
の連想配列がマージされる。 dest
自体はもともと空の連想配列なので、実質 src
のDeepCopyとなる。
第一引数に true
を渡すと再帰的に階層を渡ってマージするので基本的には true
を渡しておいたほうが良さそう。