数组的浅拷贝和深拷贝
1、数组浅拷贝:(直接赋值)
var arr1 = [1, 2, 3, 4];
var arr2 = arr1;
arr1[0] = 6; // 数组是用堆去保存的,相等的时候->只是把存放的地址拷贝过去了,两个指向了同一个地址,所以在改变其中一个数组的值时,另一个数组的值也跟着改变了。
console.log(arr2[0]); // 输出结果为6
console.log(arr1); // [6, 2, 3, 4]
console.log(arr2); // [6, 2, 3, 4]
2、数组深拷贝:
- slice方法:
slice() 方法可从已有的数组中返回选定的元素。
语法:arrayObject.slice(start,end)
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
var arr1 = [1, 2, 3, 4];
var arr2 = arr1.slice(0); // 从0开始到末尾截取数组,然后返回一个新数组
arr1[0] = 6;
console.log(arr2[0]); // 输出结果为1
console.log(arr1); // [6, 2, 3, 4]
console.log(arr2); // [1, 2, 3, 4]
- concat方法:
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个新的数组。
语法&#