其他分享
首页 > 其他分享> > js数组复制(浅拷贝,深拷贝)

js数组复制(浅拷贝,深拷贝)

作者:互联网

数组的直接赋值属于数组的浅拷贝,JS存储对象都是存内存地址的,所以浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一个数组变化,另一个数组也会相应的变化。
数组内部不含有引用类型,使用slice() 、concat() 和 assign() 方法都属于数组的深拷贝,一个数组变化,另一个数组不受影响。
数组内部含有引用类型,使用slice() 、concat() 和 assign() 方法,非引用类型的值属于深拷贝,引入类型的值属于浅拷贝,一个数组变化,另一个也会相应的变化。

浅拷贝:

 

 深拷贝:

方法一:通过JSON.stringify转化成字符串再通过JSON.parse()解析成原数组

方法二:利用jQuery的$.extend方法。

$.extend( [deep ], target, object1 [, objectN ] );

deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝
target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
object1 objectN可选。 Object类型 第一个以及第N个被合并的对象。

var newArr = $.extend(true,[],arr)

标签:extend,对象,js,数组,类型,拷贝,方法
来源: https://www.cnblogs.com/bing0709/p/16327027.html