首页 > 其他分享 >深拷贝函数

深拷贝函数

时间:2023-03-27 17:12:26浏览次数:29  
标签:map obj 函数 cloneObj key return 拷贝

// 使用map生成考虑了所有情况的深拷贝函数
function deepClone(obj, map = new WeakMap()) {
  // 基本类型直接返回
  if (typeof obj !== "object" || obj === null) {
    return obj;
  }

  // 如果map中有obj,直接返回,防止循环引用
  if (map.get(obj)) {
    return map.get(obj);
  }

  // 判断obj是数组还是对象,生成对应的cloneObj
  let cloneObj = Array.isArray(obj) ? [] : {};

  // 以obj为key,cloneObj为value存入map中,防止循环引用
  map.set(obj, cloneObj);

  // 遍历obj,递归调用deepClone
  for (let key in obj) {
    // 保证key不是原型的属性
    if (obj.hasOwnProperty(key)) {
      // 递归调用
      cloneObj[key] = deepClone(obj[key], map);
    }
  }
  // 返回拷贝后的对象
  return cloneObj;
}

标签:map,obj,函数,cloneObj,key,return,拷贝
From: https://www.cnblogs.com/crispyChicken/p/17262210.html

相关文章

  • 灰狼优化算法GWO优化SVM支持向量机惩罚参数c和核函数参数g
    灰狼优化算法GWO优化SVM支持向量机惩罚参数c和核函数参数g,有例子,易上手,简单粗暴,替换数据即可,分类问题。仅适应于windows系统YID:6999630206572076......
  • C语言—字符函数和字符串函数解析及其模拟实现
    目录一、求字符串的长度1、strlen()-字符串长度二、长度不受限制的字符串函数1、strcpy()-字符串拷贝2、strcat()-字符串追加3、strcmp()-字符串比较三、长度受限制的字符串函数1、s......
  • C语言 | C语言中的四种特殊函数
    目录1.递归函数2.变参函数3.回调函数4.内联函数5.拓展1.递归函数与普通函数比较,执行过程不同,该函数内部调用它自己,它的执行必须要经过两个阶段:递推阶段,回归阶段。递推阶段-......
  • mysql 省事方便的函数
    1、group_concat在我们平常的工作中,使用groupby进行分组的场景,是非常多的。比如想统计出用户表中,名称不同的用户的具体名称有哪些?sql:  select name from `user`......
  • 如何编写一个arrange 函数
    /***@description链式调用的方法*@param{*}taskIs*@example*arrange('arrage').waitFirst(2).do('吃西瓜').do('吃西瓜2').execute()*@returns{exec......
  • Oracle-nvl函数的使用(及其相似函数)
    Oracle中的nvl函数使用//SQL实例selectNVL("字段名称",指定常量)from"表名";//结构拆解NVL("数据1","数据2");代码解释上述SQL的含义是指,从指定表中查出指定字段......
  • Oracle中nvl()与nvl2()函数详解
    1.nvl:根据参数1是否为null返回参数1或参数2的值【函数格式】:nvl(expression1,expression2)【函数说明】:若expression1值为null,则该函数返回expression2;若expression1......
  • python 类的方法与普通函数的区别
    引用菜鸟教程中所说:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,按照惯例它的名称是self。下面我就写了个类的构造方法和类的方法,......
  • Delphi Locate函数[1] - 查询、定位
     DelphiTDataSet.Locate函数-查询、定位使用ADO等数据控件的时候,经常会用到 locate函数,在结果数据集中查询和定位,下面介绍一下:原型:1function Locat......
  • Linux函数之lseek、stat、lstat
    Linux函数之lseek、stat、lstat的简单介绍lseek函数在Linux终端下输入命令:man2lseek,可以查看具体函数信息#include<sys/types.h>#include<unistd.h>......