美文网首页
递归函数深拷贝

递归函数深拷贝

作者: 十九_1186 | 来源:发表于2018-11-14 18:56 被阅读0次

思路

当我们需要深拷贝一个数组,并且这个数组里面包含数值类型、对象类型,或者数组嵌套数组的时候,先写两个函数,一个是深拷贝数组的方法,一个是深拷贝对象的方法,然后把这两个函数结合到一个函数里。
数组深拷贝
var arr=[1,2,3,4,5,6];
function fun1(arr){
  var arr1=[];
   for(var i=0;i<arr.length;i++){
     arr1.push(arr[i]);
  } 
    return arr1;
}
var res = fun1(arr);
arr.push[0,9,8];
console.log(res);
对象深拷贝
var obj={name:"张三",age:43}
function fun2(obj){
  var obj1={};
  for(x in obj){
    obj1[x]=obj[x];
  }
     return obj1;
}
var res = fun2(obj);
obj.name="李四";
console.log(res);
结合到一个函数里
function fun(arr){
  if(arr.constructor.name==="Array"){
    var arr1=[];
     for(var i=0;i<arr.length;i++){
       arr1.push(arr[i]);
    }
    return arr1;
  }else{
  var obj={}:
  for(x in arr){
    obj[x]=arr[x];
    }
  return obj;
  }
}
上面的这个结合,只是单纯的判断了一下 这个形参是数组还是对象,但是,如果这个形参是个对象数组怎么办,那么就需要再次进行判断了。
function fun(arr){
  if(arr.constructor.name==="Array"){
    var arr1=[];
     for(var i=0;i<arr.length;i++){
        if (typeof(arr[i])==="object"){
          arr1.push(fun1(arr[i]));
        }else{
            arr1.push(arr[i]);
        }
    }
    return arr1;
  }else{
  var obj={}:
  for(x in arr){
    if(typeof(arr[i]==="object")){
        obj[x]=fun1(arr[x]);
    }else{
         obj[x]=arr[x];
        }
    }
  return obj;
  }
}

    var a =[1,2,3,{name:"zhangsan", age:23},[7,8,9]];
    var str= fun1(a);
    a[3].name="lisi";
    console.log(res);

相关文章

  • 实现深拷贝的几种方法(JS)

    使用递归 通过 JSON 对象实现深拷贝 lodash函数库实现深拷贝

  • js 浅拷贝与深拷贝函数

    参数p 为parent 父类,参数c为child子类 浅拷贝函数 深拷贝函数(即递归调用浅拷贝)

  • js实现一个通用的深拷贝

    对象深拷贝 用递归实现深拷贝,这里的函数做了bind的处理,使其返回一个新的函数,至于值是对象的话会进行递归遍历,...

  • 递归函数深拷贝

    思路 当我们需要深拷贝一个数组,并且这个数组里面包含数值类型、对象类型,或者数组嵌套数组的时候,先写两个函数,一个...

  • 递归实现深拷贝

    使用递归函数来实现一个对象的深拷贝

  • 准备:深拷贝、防抖、节流

    深拷贝 JSON 转换 如果对象中有函数、undefind,无法拷贝出 普通递归函数实现 防抖 防抖的原理就是:触...

  • 对象深拷贝和浅拷贝

    浅拷贝 深拷贝 深拷贝的递归方法 深拷贝的JSON方法

  • Javascript中的深拷贝

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 functi...

  • js 实现深拷贝

    一般不会深拷贝函数等,所以一般用递归和JSON方法即可。 如果要实现函数等拷贝,比较完美的做法: function...

  • 2021 web面试题常见之一 递归01

    递归 递归为函数a本身内部调用a,但一定有打破条件否则为死循环;常用于深拷贝深入过多不赘叙。

网友评论

      本文标题:递归函数深拷贝

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