数组深拷贝 :1 循环数组; 2 concat(); 3 es6 的写法 的实现 和 区别;

var arr8 = [
    { 'name': 'aaa', 'num': 1 },
    { 'name': 'bbb', 'num': 50 },
    { 'name': 'ccc', 'num': 20 }
  ]

  var arr8_2 = [];
  $.each(arr8, function (i, value) {
    let s = {
      name: value.name,
      num: value.num
    }
    arr8_2.push(s)   // 这里 push(s); 原始数组不会被改变;
   //  arr8_2.push(value) //这里直接 push(value); 原始数组会改变
    if (value.num > 10) {
      arr8_2[i].state = 0
    } else {
      arr8_2[i].state = 1
    }
  })

  console.log(arr8, arr8_2);

在这里插入图片描述

        var eData = [];
         var tData = [];
          res.data.forEach(it => {
           eData.push(it)
            tData.push(it)
         })

          var tData = res.data.concat();
          var eData = res.data.concat();

循环 和 concat() 都是 数组深拷贝; 不覆盖旧的数据, 生成新的数组

循环,可以添加新的属性;
concat() 只是拷贝, 不能添加新属性

es6 的写法

 var arr1 = [1, 2, 3];
 var [...arr2] = arr1;
 arr1[0] = 4;
 console.log(arr1); //4, 2, 3
 console.log(arr2); //1, 2, 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值