数组深拷贝的几种方法

Posted choppe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组深拷贝的几种方法相关的知识,希望对你有一定的参考价值。

一、深拷贝的意义

  Js五种基本类型才可以用‘=’来进行直接拷贝,其余引用类型不能直接用‘=’来进行拷贝。

1 let a = [1,2,3,4];
2 let b = a;
3 a[0] = 5;
4 console.log(b);//[5,2,3,4],b[0]的值也变了

引用类型用‘=’只是引用堆中的地址,当内存栈中的值发生改变,其值也跟着改变,为了避免这种情况发生,就有了深拷贝。

二、数组深拷贝的方法

深拷贝的核心思想就是将引用类型展开成基本类型,再进行拷贝。

1.遍历(仅限于一层,数组的item是基本类型)

1 let a = [1,2,3,4];
2 let b = [];
3 a.forEach(item=>{
4    b.push(item) 
5 });
6 console.log(b);//拷贝后a和b的值相同
7 a[0] = 5;
8 console.log(b);//即使改变a的值,b的值也不会发生改变

2.ES6展开符...(仅限于一层,数组的item是基本类型)

1 let a = [1,2,3,4];
2 let b = [...a];
3 console.log(b);
4 a[0] = 5;
5 console.log(b);

3.concat()函数

1 let a= [1,2,3,4];
2 let b = a.concat();
3 console.log(b);
4 a[0] = 5;
5 console.log(b);

 

以上是关于数组深拷贝的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

Day_4——JavaScript复制数据的几种级别-递归实现深拷贝-数组常用的方法

实现深拷贝的几种方法

通过项目实战学习:深拷贝与浅拷贝的内涵,实现深拷贝的几种方法,深拷贝解决项目异常bug

深拷贝与浅拷贝的区别,实现深拷贝的几种方法

深拷贝与浅拷贝的区别,实现深拷贝的几种方法

JS深拷贝与浅拷贝的区别,实现深拷贝的几种方法