JSON.parse(JSON.string)无法对数组中含有函数的拷贝,否则会出现内存占位异常的问题,导致数据都是underfind,json报错等问题
const deepCopy=(obj)=> {
if (typeof obj !== 'object') return obj;
const newObj = Array.isArray(obj) ? [] : {};
for(let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
如果出现了内存溢出的问题,就请参考下面的方法,希望给你得到帮助!
const deepCopy=(obj,map = new Map())=> {
if (typeof obj === 'object') {
let res = Array.isArray(obj) ? [] : {};
if(map.get(obj)){
return map.get(obj);
}
map.set(obj,res);
for(let i in obj){
res[i] = deepCopy(obj[i],map);
}
return map.get(obj);
}else{
return obj;
}
}