数组深拷贝的几种方法
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复制数据的几种级别-递归实现深拷贝-数组常用的方法