js数组拷贝之浅拷贝-非严格深拷贝-深拷贝

首先为什么会有这三个概念:

》》》》专业说法:数组是引用类型,常规的复制复制的是引用

》》》》白话说法:因为js数组的复制如果操作新数组会影响原数组,类似java引用类型操作

废话不多说看例子:

var arr1=["1","2","3"];

var arr2=[];

1、浅拷贝

arr2= arr1;

如果修改arr2,会导致arr1内容同步改变

2、非严格深拷贝 slice、concat

 arr2=arr1.slice(0);//concat自行研究效果一样

此时改变arr2,arr1内容不会改变,BUT

如果arr1是二维数组,或者arr1元素有对象,此时slice、concat得到arr2,操作arr2依然有问题

针对二维数组为例:只是复制了数组的第一维,二维仍然是引用,修改新数组的二维会影响原数组

var arr1=[["1","2","3"],"2","3"]

3、解决方案 用JSON转

arr2= JSON.parse(JSON.stringify(arr1));//深拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值