如何在角度2中創建深度複製,我嘗試使用let newObject = Object.assign({}, myObject)
,但仍然反映了在newObject中所做的所有更改。創建角度爲2的深度複製
回答
只需使用以下功能:
/**
* Returns a deep copy of the object
*/
public deepCopy(oldObj: any) {
var newObj = oldObj;
if (oldObj && typeof oldObj === "object") {
newObj = Object.prototype.toString.call(oldObj) === "[object Array]" ? [] : {};
for (var i in oldObj) {
newObj[i] = this.deepCopy(oldObj[i]);
}
}
return newObj;
}
嘗試使用Lodash.js。因爲角度2沒有任何深度複製的方法。更多信息參見:https://lodash.com/docs#cloneDeep
或者您可以使用此javascript函數
var copy = Object.assign({}, myObject);
您是否認爲只爲這一功能包含lodash是合理的? 要添加2個數字,你會安裝math.js嗎?那麼你會不斷添加隨機的第三方庫來處理你遇到的每一件小事? – Azarus
這就是爲什麼我已經給出了第二個選項 –
,但我知道那是錯的可悲。請參閱文檔: 警告的深克隆 對於深克隆,我們需要使用其他的替代品,因爲Object.assign()copies屬性值。如果源值是對某個對象的引用,它只會複製該引用值。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign – Azarus
- 1. 以角度深度複製對象?
- 2. jquery.extend(true,[],obj)不創建深度複製
- 3. 創建深度複製方法,Java
- 4. 如何創建位圖深度複製
- 5. 創建<Fish> arrayList深度複製
- 6. 角度2:如何創建對象,將角度翻譯爲角度2
- 7. 深度複製2維對象陣列
- 8. 與深度等於創建列表2
- 9. ngModel的深度對象創建機制
- 10. elisp的深度複製 - consing
- 11. 創建過渡的角度2/4
- 12. 角度深度鏈接?
- 13. GWT覆蓋深度複製
- 14. Ruby:對象深度複製
- 15. 如何深度複製NSMutableURLRequest?
- 16. 鏈式Java深度複製?
- 17. 深度複製陣列
- 18. 如何深度複製
- 19. 深度複製Java中
- 20. Python C APi深度複製
- 21. S4對象深度複製
- 22. 功能深度複製
- 23. 深度複製嘗試
- 24. 深度複製散列表
- 25. 更改要複製的對象時的深度複製行爲
- 26. 將深度渲染緩衝區複製到深度緩衝區
- 27. 角度2,角度2通用差異
- 28. 角度2量表控制
- 29. 角UI樹限制最大深度
- 30. 從角度控制器創建指令
我認爲它的打字稿問題不angular2。糾正我,如果我錯了 –
你的意思是深拷貝或淺拷貝? http://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy –
@SurajRao好了,現在我也困惑,我只是想重置我的對象在默認狀態下,當我的工作完成了該對象。所以要做到這一點,我需要存儲該默認副本,但是當我在一個地方進行更改時,所有其他副本也會被更改。如何防止呢? –