前端使用递归实现深拷贝请给出多种方法和简单代码
方法一:使用JSON.parse和JSON.stringify
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
方法二:使用递归
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
方法三:使用Object.assign
function deepCopy(obj) {
return Object.assign({}, obj);
}
方法四:使用递归和Object.create
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy = Object.create(Object.getPrototypeOf(obj));
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
``
原文地址: http://www.cveoy.top/t/topic/iNqK 著作权归作者所有。请勿转载和采集!