备份数组,js数据的深拷贝

    技术2023-09-05  108

    大家好呀,我是凡玉,小萌新遇到了一个问题,那就是数组生命共同体。 我们需要做的事是声明一个数组并赋值,然后将这个数组的值进行修改并保留他原本的数据 相信大家第一个想法应该大致是这样的

    let data1 = [1,2,3,4]; let data2 = data1; data1[3] = 5;

    这里我们声明了data1然后将data1的值给了data2,然后对data1的3下标进行了修改,那么这些代码执行完之后我想要的结果是

    //data1:[1,2,3,5]; //data2:[1,2,3,4];

    然而事实情况的结果是

    //data1:[1,2,3,5]; //data2:[1,2,3,5];

    因为 当两个数组用等于号时他们就会成为生命共同体,其中一个的下标发生变化,另一个就会及时复制对方的数据 这个时候我们就需要js数组的深拷贝, 1:方法 for循环 (不推荐使用)

    var data1 = [1,2,3,4]; var data2 = []; for (var i = 0; i < data1.length; i++) { data2.push(data1[i]); } data1[3] = 5; //data1:[1,2,3,5]; //data2:[1,2,3,4];

    因为循环对性能损耗较大,所以并不是很推荐大家这样写 建议使用concat方法

    var data1 = [1,2,3,4]; var data2 = data1.concat(); data1[3] = 5; //data1:[1,2,3,5]; //data2:[1,2,3,4];
    Processed: 0.013, SQL: 9