美文网首页
JS数组及对象的深拷贝

JS数组及对象的深拷贝

作者: 菁卡因 | 来源:发表于2016-11-29 16:38 被阅读0次

    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; 
      }

    相关文章

      网友评论

          本文标题:JS数组及对象的深拷贝

          本文链接:https://www.haomeiwen.com/subject/fhoapttx.html