JS數組及對象的深拷貝

1. 淺層的數組或對象拷貝(也就是數組中不包含對象或數組)
****1.1 通過slice或者concat方法****
例如:數組2復制數組1

    var arr2 = arr1.slice(0);
    var arr2 = arr1.concat();

****1.2 遍歷數組或對象方法****

    var simpleCopy = function(o){
         if (o instanceof Array) 
         { 
                var n = []; 
                for (var i = 0; i < o.length; ++i)
                    n[i] = o[i];  
                return n; 
          } 
          else if (o instanceof Object) 
          { 
                var n = {} ;
                for (var i in o) 
                      n[i] = o[i];
                return n; 
          }
     }

2. 實現拷貝包含對象或者數組的這種情況呢?那么就通過遞歸拷貝來實現。

  var deepCopy = function(o) { 
       if (o instanceof Array)
       { 
             var n = [];
             for (var i = 0; i < o.length; ++i) 
                   n[i] = deepCopy(o[i]); 
             return n; 
       } 
      else if (o instanceof Object) 
      {     
            var n = {} ;
            for (var i in o) 
                n[i] = deepCopy(o[i]); 
           return n; 
      } 
      else    return o; 
  }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.背景介紹 什么是棧內存和堆內存? JavaScript中的變量的存放有有原始值與引用值之分,原始值代表了原始的...
    lx2487閱讀 3,363評論 0 2
  • 大家好,我是IT修真院成都分院第7期的學員韓建名,一枚正直純潔善良的WEB前端程序員。 1.背景介紹 在使用Jav...
    inh_閱讀 366評論 0 0
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • 收拾好行李,準備出發。 其實我不是一個特別愛玩的人,平時周六日休息也基本上宅在家里,要不就是去逛街,去公園,游樂園...
    薄荷的自由未來閱讀 160評論 0 0
  • 本文是新精英《職場MVP》部分課程的筆記及個人感悟總結。 職位調研 職業的選擇不止考慮當前的性價比,更要考慮持續的...
    馬騁閱讀 1,062評論 0 1