当前位置: 首页 > news >正文

阿里建站价格网站建设实战李静

阿里建站价格,网站建设实战李静,德州天元建设集团有限公司,最好用的素材网站🎀个人主页:努力学习前端知识的小羊 感谢你们的支持:收藏🎄 点赞🍬 加关注🪐 文章目录算法地址算法题解分析深拷贝与浅拷贝在练习算法时,遇到了深拷贝与浅拷贝的问题,于是就了解了一…

🎀个人主页:努力学习前端知识的小羊
感谢你们的支持:收藏🎄 点赞🍬 加关注🪐

文章目录

    • 算法地址
    • 算法题解
    • 分析深拷贝与浅拷贝

在练习算法时,遇到了深拷贝与浅拷贝的问题,于是就了解了一番

算法地址

浅拷贝
深拷贝

算法题解

浅拷贝

const _shallowClone = target => {// 补全代码let copyRes=Array.isArray(target)?[]:{}for(let key in target){copyRes[key]=target[key]}return copyRes
}

深拷贝

 const _completeDeepClone = (target, map = new Map()) => {  // 补全代码if(target === null) return targetif(typeof target !== 'object') return targetconst constructor = target.constructorif(/^(Function|RegExp|Date|Map|Set)$/i.test(constructor.name)) return new constructor(target)   //进行深拷贝,不能传递地址if(map.get(target)) return map.get(target)  //已经遍历到了,直接返回结果map.set(target, true)   //还未遍历,设置为trueconst cloneTarget = Array.isArray(target) ? [] : {}for(prop in target) {       //开始遍历if(target.hasOwnProperty(prop)) {cloneTarget[prop] = _completeDeepClone(target[prop], map)}}return cloneTarget}

分析深拷贝与浅拷贝

浅拷贝

浅拷贝:自己创建一个新的对象,来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型,复制的就是基本类型的值给新对象;但如果属性是引用数据类型,复制的就是内存中的地址,如果其中一个对象改变了这个内存中的地址,肯定会影响到另一个对象。

实现浅拷贝,可以直接通过Object.assign方法实现

const obj = {};
const source = {name: 'nordon',info: {age: 18}
};Object.assign(obj, source);

注:该方法的第一个参数是拷贝的目标对象,后面的参数是拷贝的来源对象(也可以是多个来源)。

实现浅拷贝,也可以通过扩展运算符来实现

const source = {name: 'nordon',info: {age: 18}
};
const obj = {...source};

深拷贝

深拷贝作用在引用类型上!例如:Object,Array
深拷贝不会拷贝引用类型的引用,而是将引用类型的值全部拷贝一份,形成一个新的引用类型,这样就不会发生引用错乱的问题,使得我们可以多次使用同样的数据,而不用担心数据之间会起冲突。

实现深拷贝,可以通过for in 实现


function deepCopy1(obj) {let o = {}for(let key in obj) {o[key] = obj[key]}return o
}let obj = {a:1,b: undefined,c:function() {},deepCopy1(obj)

实现深拷贝还可以通过递归实现

function deepClone1(obj) {//判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝var objClone = Array.isArray(obj) ? [] : {};//进行深拷贝的不能为空,并且是对象或者是if (obj && typeof obj === "object") {for (key in obj) {if (obj.hasOwnProperty(key)) {if (obj[key] && typeof obj[key] === "object") {objClone[key] = deepClone1(obj[key]);} else {objClone[key] = obj[key];}}}}return objClone;
}

希望对朋友们有所帮助,如有更好的见解,欢迎评论留言哦,期待你们的支持✨✨✨

http://www.yayakq.cn/news/945654/

相关文章:

  • 网站建设期末试卷wordpress 清理媒体库
  • 高唐网站建设做网站需要懂什么软件
  • 做外贸网站需要注意哪些net和cn哪个做网站好
  • 站长工具whois查询本科软件开发专业
  • wordpress默认字体大小关键词优化排名易下拉排名
  • 崇信县门户网站留言首页有关小城镇建设的网站
  • 苏州创元投资集团网站东莞网站推广模板
  • 手机平台网站系统免费网站管理系统下载
  • 我买了一个域名怎么做网站重庆网站seo什么意思
  • 征信网站开发开发公司认领工程网站
  • 网站建设的重点网络营销外包网络推广
  • 网站建设案例代理商腾讯云网站建设流程图
  • 自助网站建设开发流程步骤wordpress 记录ip插件
  • 做外贸网站能用虚拟主机吗wordpress兼容html
  • 图片展示型网站网站平台建设所需开发工具
  • 网站栏目收录叫别人做网站需要注意什么问题
  • 公司网站域名及空间网站的域名和空间
  • 凡科建站快车国内交互网站
  • 个人网站企业网站安卓开发为什么不火了
  • 电子商务网站建设和维护wordpress编辑图像
  • 网站建设在作用是什么更改wordpress链接数据库
  • 五金商城网站建设注意网站如何做实名验证
  • 怎么在云服务器上搭建网站做家装的网站有哪些内容
  • 网站自己建机房wordpress更新服务
  • 展示系统 网站模板免费下载广州网站建设开发设计
  • 不备案怎么做淘宝客网站吗创意设计图片大全
  • 莱州免费发布信息的网站平台江门生活网
  • 微信网站应用开发wikidot网站怎么做
  • Pc端做社区网站用什么框架网站与数据库的联系
  • 众筹网站建设应该具备哪些资质泰州做网站