数组深拷贝的几种方法


一、深拷贝的意义

  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);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM