js深拷贝的三种实现方式(js实现深拷贝的方法)

1、利用JSON对象字符串转换方法(对象中不能有函数,值不能是引用的)。

function deepCopy(ele) {
        return JSON.parse(JSON.stringify(ele));
 }
 const obj = {
   a: {
          b: [1, [2, [, 3, 4]], { c: 5 }],
    },
 };
 const newObj = deepCopy(obj);
newObj.a.b[2].c = 6;
console.log(newObj.a.b[2].c, obj.a.b[2].c); // 6 5

2、利用递归遍历的方法

function deepCopy(ele) {
  const type = typeof ele;
  const baseType = [
          "boolean",
          "number",
          "string",
          "undefined",
          "function",
  ];
  if (baseType.indexOf(type) > -1 || ele === null) return ele;
  const newType = Object.prototype.toString.call(ele);
  if (newType === "[object Array]") {
          const len = ele.length;
          if (!len) return [];
          const res = [];
          for (let i in ele) {
            res.push(deepCopy(ele[i]));
          }
          return res;
   }
   if (newType === "[object Object]") {
        if (Object.keys(ele).length === 0) return {};
        const res = {};
    		for (let key in ele) {
        res[key] = deepCopy(ele[key]);
    	}
       return res;
    }
} 
const obj = {
   a: {
          b: [1, [2, [, 3, 4]], { c: 5 }],
    },
 };
const newObj = deepCopy(obj);
newObj.a.b[2].c = 6;
console.log(newObj.a.b[2].c, obj.a.b[2].c); // 6 5
秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 东兴之战是哪一年(东兴之战发生时间)

    “东兴之战”的历史背景:孙权病死,诸葛恪筑东兴堤二城 “东兴之战”发生在公元252年。按照曹魏的年号,是嘉平四年;按照东吴的年号,是在建兴元年。 从东吴这个年号就可以看出来,当时东…

    2022年2月18日 用户投稿
  • 5g苹果手机大概多少钱(苹果的5G手机明年到来)

    2021 年是手机行业最卷的一年,华为黯然离场,各家冲击高端,国内手机市场就像晋西北乱成了一锅粥。无论是高端价位还是入门价位,各家都相互背刺,大大小小购物节促销,也让许多新机的价格…

    2022年6月30日 用户投稿
  • android定时器的使用(手机定时器软件推荐)

    定时器适合用来执行一些耗时,非常短的任务。如果你有一个操作,需要花很长的时间,那定时器在这种情况下是不适合使用的。 定时器,在安卓编程中是经常被用到的。下面先说一个定时器的应用场景…

    2022年1月25日
  • cf准心辅助有用吗(cf手游自瞄挂安卓版)

    97973手游网小编为大家分享穿越火线手游辅助瞄准怎么用 瞄准技巧分享,详细讲解穿越火线手游攻略,希望这篇攻略能够帮助到大家! CF手游中有一个可以帮助玩家瞄准的辅助瞄准系统,很多…

    2022年2月11日
  • 怎么煮鸡蛋(煮鸡蛋的做法)

    让我们彻底打开这个案子。 煮熟的鸡蛋。这很简单,当然,这很容易搞砸。 在水中多一分钟可能意味着那个讨厌的绿色环的出现(不!),当您计划使用著名的魔鬼蛋时,一批易碎的、难以剥皮的可能…

    2022年6月24日 用户投稿
  • 简历中的兴趣爱好怎么写(个人简历兴趣爱好)

    作为拥有五百强和大厂经验的HR,看过太多简历,为大家辛辛苦苦写出来但是却没有重点和亮点的简历感到遗憾和着急。明明花了同样的时间,履历背景也差不多,为什么有的同学写出来的简历就是被H…

    2022年7月1日 用户投稿
  • 便秘怎么办快速排便(如何快速排便)

    “走吧!进去试试!” “还是再等等吧,我还没感觉呢!” “这都多少天了,还是上医院看看吧!” “我不去!我不去!” …… 有时候厕所里的马桶就像皇帝的宝座,坐上去释放自己浑身轻松,…

    2022年6月23日 用户投稿
  • 智能拼音输入法哪个好用(PC端拼音输入法哪个好)

    对于老一辈用户来说,输入法只是线上交流的工具,关于拼音还是五笔,九宫格还是26键的争论无非是打字习惯与效率上的偏好之分。但在年轻的Z时代看来,输入法是连接“三次元”与赛博空间的一个…

    2022年7月2日
  • dnf异界怎么去最新(dnf70版本异界攻略)

    菡酱DNF小课堂开课啦,魂·异界不知道怎么玩,不要慌,看这一篇Q&A就够了。废话不多说,直接上正文。 (本文所有内容来自体验服,一切以正式服为准) Q:魂·异界怎么进? A:赛丽亚…

    2022年1月26日 用户投稿
  • 杜月笙发家史(杜月笙怎么起家的)

    杜月笙发家史:依靠一种技能降伏上海黑帮,成为一代枭雄! 看过有关民国时期电影的 人都知道,杜月笙,上海滩的奇人。民国时期,叱咤上海的风云人物。他能从最底层的小赤佬,成为人人尊称的杜…

    2022年2月15日 用户投稿
品牌推广 在线咨询
返回顶部