'='不能复制数组
如果使用=
来赋值,不是复制,而是相当于把新数组的指针与指向旧数组所指向的数据,如果新数组变了,旧数组也会一起改变:
const arr1 = [1, 2, 3, 4]
const arr2 = arr1
console.log(arr2) // [1, 2, 3, 4]
arr2.push(5)
console.log(arr2) // [1, 2, 3, 4, 5]
console.log(arr1) // [1, 2, 3, 4, 5]
复制数组
1.使用concat
concat() 用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
const arr1 = [1, 2, 3, 4]
const arr2 = arr1.concat()
console.log(arr2) // [1, 2, 3, 4]
arr2.push(5)
console.log(arr2) // [1, 2, 3, 4]
console.log(arr1) // [1, 2, 3, 4, 5]
2.使用ES6 中的扩展运算符...
const arr1 = [1, 2, 3, 4]
// 写法一
const arr2 = [...arr1]
// 写法二
const [...arr2] = arr1
console.log(arr2) // [1, 2, 3, 4]
arr2.push(5)
console.log(arr2) // [1, 2, 3, 4, 5]
console.log(arr1) // [1, 2, 3, 4]
网友评论