JS 数组的浅复制与深复制

数组的深复制与浅复制

首先先了解一下深复制和浅复制的官方概念。

深复制:

是将指向内容复制到给当前对象新分配的缓冲区中的一种复制方式,相对于浅复制。

浅复制:

浅复制是指当对象的字段值被复制时,字段引用的对象不会被复制。


相信在座的各位看完官方概念都没有几个看懂的,接下来我将展示我所理解的深复制与浅复制。

深复制 - 复制数组中的元素内容(数据)
浅复制 -  复制数组的内存地址

接下来用数组的复制来进行解析深复制与浅复制的区别,示例代码如下:

var arr1 = [1,2,3,4,5]

//浅复制
var arr2 = arr1;
arr2[2] = 6;
console.log(arr2,arr1)
/*
输出结果为:[ 1, 2, 6, 4, 5 ] [ 1, 2, 6, 4, 5 ],因为是浅复制,arr2
和arr1的数据内容指向相同的地址,所以arr2的内容改变,arr1的数据内容也随之改变。
*/

// 深复制
var arr3 = [];
for (var i=0;i<arr1.length;i++){
    arr3[i] = arr1[i];
}

console.log(arr3);//[ 1, 2, 3, 4, 5 ]
arr3[2] = 6;//改变arr3中位置为3的数据
console.log(arr3,arr1);//打印arr3和arr1
/*
输出结果为:[ 1, 2, 6, 4, 5 ] [ 1, 2, 3, 4, 5 ]。因为是深复制,所以arr3
只是复制了arr1的数据内容,所以arr3的数据内容改变,arr1的数据内容不随之改变。
*/
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不苒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值