ES6数组的复制
浅拷贝
let a1 = [1, 2, 3, 4, 5]
let a2 = a1
console.log(a1) // 1 2 3 4 5
console.log(a2) // 1 2 3 4 5
a2[0] = 2
console.log(a1) // 2 2 3 4 5
console.log(a2) // 2 2 3 4 5
这样做的话,a1和a2实际上指向的是同一个对象,其中一个被修改会导致另一个也发生同样变化,往往对数组的复制并不想得到这样的结果。
深拷贝
let a1 = [1, 2, 3, 4, 5, 6]
let a2 = a1.concat() // concat()实际上是用于拼接数组,参数为另一个数组(此处不传参),结果会返回一个新数组。例如a1.concat([1, 2, 3]) --> newA = [1, 2, 3, 4, 5, 6, 1, 2, 3]
let a3 = [...a1]
console.log(a1) // 1 2 3 4 5 6
console.log(a2) // 1 2 3 4 5 6
console.log(a3) // 1 2 3 4 5 6
a2[0] = 2
a3[0] = 6
console.log(a1) // 1 2 3 4 5 6
console.log(a2) // 2 2 3 4 5 6
console.log(a3) // 6 2 3 4 5 6

浙公网安备 33010602011771号