• js中的克隆方法


    1、如果克隆对象是基本类型,直接复制就行

    1     var str1 = 'abc'
    2     var str2 = str1
    3     console.log(str2)  //abc
    4     str1 = '123'
    5     console.log(str2)  //abc

    2、如果不是基本类型,就不能直接复制,以数组为例

    1     var a=[1,2,3,4];  
    2     var b= a;  
    3     var c=b;  
    4     c.pop();  
    5     
    6     console.log(a)  //[1,2,3]
    7     console.log(b)  //[1,2,3]
    8     console.log(c)  //[1,2,3]

    克隆的几种方法:

    一、比较简单的遍历数组赋值

    1     var a = [1,2,3,4];  
    2     var b = [];
    3     for(var i = 0; i < a.length; i++){
    4         b.push(a[i])
    5     }
    6     console.log(b)     //[1,2,3,4]

    二、slice方法

    原理:从一个数组中截取出新的数组

    接收两个参数,第一个参数开始的下标,第二个参数结束的下标(不包含)。

    原数组不变。如果只设置一个参数,表示截取到最后。如果不写参数,表示实现数组的复制

    1     var arr1 = [1, 2, 3, 4]
    2     var arr2 = arr1.slice(0)
    3     console.log(arr2)        //[1,2,3,4]
    4     arr1 = [4, 3, 2, 1]
    5     console.log(arr2)     //[1,2,3,4]

    三、assign实现深浅拷贝

    浅拷贝:

    1     var obj = { a: 1 };
    2     var copy = Object.assign({}, obj);
    3     console.log(copy); // { a: 1 }
    4         
    5 6     var arr = [1,2,3];
    7     var copy = Object.assign([], arr);
    8     console.log(copy); // [1,2,3]

    深拷贝:

    1     let arr1 = [1,2,3,4,5];
    2     let arr2 = JSON.parse(JSON.stringify(arr1));
    3     console.log(arr2)  //[1,2,3,4,5]

    四、concat方法

    原理:拼接数组

    返回拼接后的新数组,原数组不受影响

    1     let arr1 = [1,2,3,4];
    2     
    3     let arr2 = arr1.concat()
    4 5     arr2[1] = 9
    6     console.log(arr1, arr2) //[1,2,3,4], [1,9,3,4]
  • 相关阅读:
    go基础系列:结构struct
    梯度下降法解决线性回归
    梯度下降法解决线性回归
    梯度下降法解决线性回归
    【 Linux 】单台服务器上并发TCP连接数(转)
    【 Linux 】单台服务器上并发TCP连接数(转)
    【 Linux 】单台服务器上并发TCP连接数(转)
    axios在vue项目中的一种封装方法
    快速排序算法(C#实现)
    你必须知道的261个Java语言问题
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8697521.html
Copyright © 2020-2023  润新知