js数组的深浅复制
浅复制
var nums=[1,2,3,4]
var nums1=nums
console.log(nums,nums1)
nums1[0]=8
console.log(nums,nums1)
nums[0]=9
console.log(nums,nums1)
由此我们可以看出,这种通过"="进行数组赋值的方法其实为浅复制
将原来数组的地址赋值给新数组,这样新旧数组指向的是同一个地址,当某一个发生改变时,这两个数组都会改变
深复制
通过遍历循环
var nums=[1,2,3,4]
var nums1=[]
for (var i=0;i<nums.length;i++){
nums1[i]=nums[i]
}
nums[1]=88
nums1[1]=99
console.log(nums,nums1)
通过扩展运算符
var nums=[1,2,3,4]
var nums1=[...nums]
nums[1]=88
nums1[1]=99
console.log(nums,nums1)
通过concat方法
var nums=[1,2,3,4]
var nums1=nums.concat()
nums1[0]=99
nums[0]=88
console.log(nums,nums1)