美文网首页
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