JavaScript中数组怎么克隆

  介绍

这篇文章主要介绍JavaScript中数组怎么克隆,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

js主要分<>强基本数据类型及<强>引用数据类型强两大类

基本数据类型包括:数字字符串,未赋值,null,布尔,象征(es6新增)
引用数据类型:对象数组,函数,数据等
注意:基本数据类型放在* *栈空间内* *,并且是按值存放,可以直接读取和操作。
引用数据类型存放在* *堆空间内* *(门),变量的值其实是指向堆空间的地址(钥匙),因此如果克隆这个变量,相当于复制钥匙。

让arr=[1、2、3、4、5)   让arr1 arr=//这一步相当于把arr栈空间的地址赋给了arr1,其实arr和arr1操作的是同一个堆空间的对象   arr1.push (6)//arr1=[1、2、3、4、5、6)   console.log (arr)//[1, 2, 3, 4, 5, 6)

<强>因此对于引用类型的拷贝,需要拷贝堆空间的对象

<强>数组浅拷贝
1。运用数片组与concat方法返回一个<强>新数组的特性

让arr=[1、2、3、4、5)   让arr1=arr.slice ()//[1、2、3、4、5)   让arr2=arr.concat ()//[1、2、3、4、5)

2。简单粗暴的方法,遍历

让arr=[1、2、3、4、5)   让arr2=[]   arr.forEach(项=祝辞{   arr2.push(项)   }   )   console.log (arr2)

3. es6新增方法——拓展运算符

让arr=[1、2、3、4、5)   让arr1=[…arr]//[1、2、3、4、5)

4. es6新增方法-Object.assign
让arr=[1、2、3、4、5)
让arr1=[]
Object.assign (arr1 arr)
console.log (arr1)//(1、2、3.4、5)

如果数组里嵌套数组和对象,<强>浅拷贝只会拷贝该数组或者对象存放在栈空间的地 <强>址强劲,因此无论在新旧数组中改变此地址指向的对象,两个数组<强>都会发生改变强。因此我们需要深拷贝来拷贝此类数组。

<强>数组深拷贝
1。普通遍历,遍历到引用类型时候进行引用类型的拷贝

让arr=[1、2、3、4、5,{名称:& # 39;鲍勃# 39;},(& # 39;一个# 39;& # 39;b # 39;]]   函数克隆(arr) {   让arr1=[]   arr.forEach(项=祝辞{//如果不是对象,将该值插入到新数组   如果(typeof(项目)!==& # 39;对象# 39;){   arr1.push(项)   其他}{//根据遍历的对象新建一个相同类型的空对象   让obj数组运算符=项目?[]:{}   (var关键项){   如果(item.hasOwnProperty(关键)){   obj[主要]=项目(例子)   }   }   arr1.push (obj)   }   })   返回arr1   }   让arr1=克隆(arr)   arr1 [5] . name=& # 39; js # 39;   console.log (arr & # 39; arr # 39;, arr1, & # 39; arr1& # 39;)

2。简单粗暴(能拷贝数组和对象,但不能拷贝函数)

让arr=[1、2、3、4、5,{名称:& # 39;鲍勃# 39;},(& # 39;一个# 39;& # 39;b # 39;]]   让arr1=JSON.parse (JSON.stringify (arr))

以上是“JavaScript中数组怎么克隆”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

JavaScript中数组怎么克隆