浅克隆和深克隆

浅克隆和深克隆
1.浅克隆 克隆数据组的第一层 拷贝地址 一改全改
准备一个空的结果数组 使用for遍历原数组 ,将遍历到的项push 到结果数组中

//  5-8   浅克隆
     var arr = [4, 3, [2, 5], 1, 4];
     var result = [];
     // 遍历原数组,将遍历到的项都推入到结果数组中
     for (var i = 0; i < arr.length; i++) {
       result.push(arr[i]);
      }
      // 输出结果数组
     console.log(arr == result); //false确实被分开了
     console.log(result); //[33, 44, 11, 22, [77, 88]]但是藕断丝连

2 ,深拷贝 拷贝的是值 ,两者之间没有影响
如果遍历的项是基本类型 直接推入到数组, 如果遍历的项又是数组 ,继续执行浅克隆的操作

 var arr1 = [33, 44,11,22,[ 77, 88,[ 33, 44]]];
 
 function deepClone(arr){
 var result = [];   //局部变量
 // 遍历原数组,
     for (var i = 0; i < arr.length; i++) {
     // 如果 遍历到的项是数组 
          if(Array.isArray(arr[i])){
          // 递归
            result.push.(deepClone(arr[i]));
            }else{
  //如果 遍历到的项是不是数组  是基本类型值   直接推入结果数组
  //要设置递归终止条件
            result.push(arr[i]);
            }
       }
       //返回结果
      return result;
 }
 //测试
  var arr2= deepClone(arr1);
  console.log(arr1[4] == ar2r[4]); //false确实被分开了 
  arr1[4].push(99)
   console.log(arr2);   //没有 99
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值