码迷,mamicode.com
首页 > 编程语言 > 详细

数组深拷贝的几种方法

时间:2019-04-10 21:38:25      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:nbsp   reac   cat   class   console   log   style   ons   核心   

一、深拷贝的意义

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

 

数组深拷贝的几种方法

标签:nbsp   reac   cat   class   console   log   style   ons   核心   

原文地址:https://www.cnblogs.com/choppe/p/10686171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!