js中有关数组中深拷贝的问题,纠正JSON.parse(JSON.string)的弊端

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;
    }
  }

你可能感兴趣的:(js,javascript,json,vue.js)