2016-11-05 69 views
1

我在javascript中擁有這個對象obj.arr的數組。 我將它分配給一個新的對象。將JavaScript對象指定爲新對象作爲副本

var obj_arr_new = obj.arr; 

的問題是,當我修改obj_arr_newobj.arr被修改爲好。我不要那個。如何使obj_arr_new成爲obj.arr的副本,當我修改obj_arr_new時,obj.arr未觸及?

我正在使用node.js v6。我願意使用任何node.js模塊。有人告訴我lodash可以完成這項工作。使用lodash的答案會很有幫助。

+0

你做了什麼研究嗎?關於這一點已經有很多問題了,lodash文檔已經在線了。 – 4castle

+1

[我如何正確地克隆一個JavaScript對象?]可能的重複(http://stackoverflow.com/questions/728360/how-do-i-correctly-clone-a-javascript-object) – 4castle

+0

我做到了,但有一些方法似乎符合法案,但我不知道究竟是哪一種。對不起,我很慢。 – user781486

回答

4

Lodash確實有一個_.cloneDeep(value)爲此目的。

var obj_arr_new = _.cloneDeep(obj.arr); 

它將遞歸克隆「陣列,陣列緩衝器,布爾值,日期對象,地圖,數字,對象的對象,正則表達式,集合,字符串,符號和類型數組」,使得克隆的修飾位沒有按」不會影響原稿,反之亦然。

Documentation

2

我傾向於通過創建一個副本:

var copiedObject = JSON.parse(JSON.stringify(originalObject)); 

爲JSONable對象這隻作品,但如果你正在處理字符串,數組等那麼它的罰款,即如果不你有作爲你正在複製的對象的孩子的功能。