开发者社区 问答 正文

手写一个 JS 深拷贝

手写一个 JS 深拷贝

展开
收起
kun坤 2019-11-28 14:08:34 320 分享 版权
1 条回答
写回答
取消 提交回答
  • function deepCopy(obj) {
      //判断是否是简单数据类型,
      if (typeof obj == "object") {
        //复杂数据类型
        var result = obj.constructor == Array ? [] : {};
        for (let i in obj) {
          result[i] = typeof obj[i] == "object" ? deepCopy(obj[i]) : obj[i];
        }
      } else {
        //简单数据类型 直接 == 赋值
        var result = obj;
      }
      return result;
    }
    
    let o1 = {
      a: {
        b: 1
      }
    };
    let o2 = JSON.parse(JSON.stringify(o1));
    

    另一种方法

    function deepCopy(s) {
      const d = {};
      for (let k in s) {
        if (typeof s[k] == "object") {
          d[k] = deepCopy(s[k]);
        } else {
          d[k] = s[k];
        }
      }
    
      return d;
    }
    
    
    2019-11-28 14:08:52
    赞同 展开评论
问答分类:
问答地址: