栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

递归深拷贝数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归深拷贝数据

注:有的时候我们需要从栈中开辟一道新的路径时,进行深拷贝数据

  	let  obj = {
        num : 10,
        str : 'string',
        arr : [1,2,3,4],
        arr2 : {a:'1'}
    };
  
    
    // 如一下操作
    let newObj = obj
    console.log(newObj === obj);
	// 输出结果 为 true

那么当我们需要重新复制一个数据的时候我们就应该用到 递归遍历了

 function deepCopy(obj, newObj) {
    for (var key in obj) {
      // hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键
      if (obj.hasOwnProperty(key)) {
        var objValue = obj[key];
        // instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,同样也是java中的二元运算符
        if (!(objValue instanceof Object)) {
          newObj[key] = objValue;
        } else {
          var temp = new objValue.constructor;
          //递归,一直到最后一层也是值类型
          deepCopy(objValue, temp);
          newObj[key] = temp;
        }
      }
    }
  }

  var obj = {
    num: 10,
    str: 'string',
    arr: [1, 2, 3, 4],
    arr2: { a: '1' }
  };

  var newObj = {};
  deepCopy(obj, newObj)
  console.log(newObj === obj);
  //输出结果为flase

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号