首页 > 其他分享 >2022 - 11.22 对象深拷贝

2022 - 11.22 对象深拷贝

时间:2022-11-22 10:24:57浏览次数:48  
标签:obj 11.22 object 2022 type var return 拷贝 data

第一步:获取对象的类型方法

export const getObjType = (obj) => {
  var toString = Object.prototype.toString;
  var map = {
    '[object Boolean]': 'boolean',
    '[object Number]': 'number',
    '[object String]': 'string',
    '[object Function]': 'function',
    '[object Array]': 'array',
    '[object Date]': 'date',
    '[object RegExp]': 'regExp',
    '[object Undefined]': 'undefined',
    '[object Null]': 'null',
    '[object Object]': 'object',
  };
  if (obj instanceof Element) {
    return 'element';
  }
  return map[toString.call(obj)];
};

第二步:对象的深拷贝操作

/**
 * 对象深拷贝
 */
export const deepClone = (data) => {
  var type = getObjType(data);
  var obj;
  if (type === 'array') {
    obj = [];
  } else if (type === 'object') {
    obj = {};
  } else {
    // 不再具有下一层次
    return data;
  }
  if (type === 'array') {
    for (var i = 0, len = data.length; i < len; i++) {
      obj.push(deepClone(data[i]));
    }
  } else if (type === 'object') {
    for (var key in data) {
      obj[key] = deepClone(data[key]);
    }
  }
  return obj;
};

标签:obj,11.22,object,2022,type,var,return,拷贝,data
From: https://www.cnblogs.com/yehuda/p/16914256.html

相关文章

  • 【2022.11.21】PVE创建基于LXC的Docker容器
    CT模板换源cp/usr/share/perl5/PVE/APLInfo.pm/usr/share/perl5/PVE/APLInfo.pm_backsed-i's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/p......
  • ICPC2022-合肥赛区 SZTU_AtDawn队总结
    比赛前一天先简单聊聊热身赛,因为开始思路的局限,最简单的枚举题最后也没写出来,不过写出来了一个分块的数据结构。赛后发现枚举其实很简单的思路,赛时想了些复杂度很怪的东西......
  • GL-OFFICE DRESS CODE-20221121
    Today'sTopicOFFICEDRESSCODEManycompanieshavea'dresscode'thatexplainswhatstaffcanandcan'twearatwork.Doyouthinkthesepoliciesarefair,......
  • 剑指offer——Day11 2022.11.17 双指针(简单)
    Day112022.11.17双指针(简单)18.删除链表的节点自己实现直接遍历就行了代码如下:classSolution{public:ListNode*deleteNode(ListNode*head,intval){......
  • 20221121
    今天气死了~~~傻子~~~~自己说和两男同事一起回家,然后我老生气了,然后还问我为啥生气。真的有毒啊,后面打电话也问这个?我真的服了这个老六。不过,我也在想是不是我自己的问......
  • #yyds干货盘点#【愚公系列】2022年11月 微信小程序-地图的使用之线聚合
    前言地图基础属性:属性类型默认值必填说明最低版本longitudenumber是中心经度1.0.0latitudenumber是中心纬度1.0.0scalenumber16否缩放......
  • 【2022.11.21】luffy项目部署(13)
    内容详情1支付宝支付介绍#项目中需要有在线支付功能 -支付宝支付-微信支付:备案过域名-云闪付#咱们项目以支付宝支付为例 -支付流程-AP......
  • C/C++数据结构题目(2022)
    C/C++数据结构题目(2022)1、菜鸟智慧系统(线性表)[问题描述]使用双向链表模拟快递驿站的系统运作:假设快递驿站的货架分小、中、大3种类型,容量分别为500、100、50个包裹;......
  • 【2022-11-21】luffy项目实战(十二)
    一、支付宝支付介绍1.1入门"""1)支付宝API:六大接口https://docs.open.alipay.com/270/105900/2)支付宝工作流程(见下图):https://docs.open.alipay.com/270/105898/......
  • CSP-S 2022游记
    \(\text{Day-???}\)在机房摆大烂,\(\text{whk}\)大摆特摆,月考喜提班级倒一。都高二了,\(\text{1=}\)都没拿过,菜死了,退役吧。\(\text{Day-??}\)得知\(\text{CSP}\)......