一、实现数组深拷贝的一些方法:
1、使用ES6的语法
let arr1 = [2,3,4]
let arr2 = [...arr1] //或者 let [...arr2] = arr1
2、使用concat方法
let arr1 = [2,3,4]
let arr2 = []
let arr3 = arr2.concat(arr1)
3、使用slice方法
let arr1 = [2, 3, 4]
let arr2 = arr1.slice(0)
二、对象的深拷贝
1、使用JSON的方法
JSON.parse(JSON.stringify(obj))
2、递归
function deepClone (obj) {
let cloneObj = Array.isArray(obj) ? [] : {}
if (obj && typeof obj === 'object') {
for (key in obj) {
if (obj.hasOwnproperty(key)) {
if (obj[key] && typeof obj[key] === 'object') {
cloneObj[key] = deepClone(obj[key])
} else {
cloneObj[key] = obj[key]
}
}
}
}
return cloneObj
}