深拷貝(多層次數組對象的拷貝)

在開發過程中很多時候需要對多層級數組或者對象中的某一些數據做特殊處理,但是簡單的重新賦值會改變原來的對象,所以處理起來就很麻煩。簡單的淺拷貝就滿足不了我們的需求了。當然 ES6 提供了深拷貝的方法JSON.stringify()JSON.parse() ,基於實際的開發經驗,我也有自己的深拷貝的方法:

// 深拷貝
function deepCopy(obj) {
  var result = Array.isArray(obj) ? [] : {};
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (typeof obj[key] === 'object' && obj[key]!==null) {
        result[key] = deepCopy(obj[key]);   //遞歸複製
      } else {
        result[key] = obj[key];
      }
    }
  }
  return result;
}

看完代碼你會發現,運用了遞歸,沒錯就是運用遞歸,在複雜的數組對象,不管層次有多深口可以實現深拷貝。

發佈了41 篇原創文章 · 獲贊 25 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章