前端面试必会 递归 深拷贝 手写

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

        <title></title>

    </head>

    <body>

        <script>

            // js 拷贝一个对象

            // 深拷贝,目标对象与源对象相互之间切断联系

            var  obj1 = {name:"mumu",age:18,friend:["小红","小绿",{name:"小蓝",job:"teacher"}],say(){alert("你好我是"+this.name)}};

             // 如果是数组需要递归,如果是对象需要递归,如果是值类型递归结束

             function deepCopy(obj){

                 if(typeof obj=="object"&&obj!=null){

              &nbs

JavaScript面试手撕深拷贝 首先使用利用将对象转成JSON字符串。再用JSON.parse把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。是lodash库提供的深拷贝的方法,非常实用,建议背诵😂。 阅读详情

相关推荐

JavaScript手写系列之手写深拷贝

传说中前端面试必考的手写系列之,实现深拷贝~ 1、思路就是递归实现啦~ 然后要注意先判断是不是数组,因为数组和对象都是引用类型,如果用instanceof判断呢,因为都在同一条原型链上, 2、编码实现 const obj1 = { name: 'Yolanda', age: 18, info: { array: [1, 3, [4, 8, 0], [2, 4, 7]], friends: { male: { name: '

Yolanda_NuoNuo的专栏 1490

前端面试最常见手写递归

前端面试中最常见使用递归方法手写数组扁平化 let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]; let arr1 = [] //首先需要写一个方法 //传入参数 //遍历数组每一项 使用isArray进行判断,如果当前的这一项是 //数组类型 就调用自己自定义的函数 无限遍历数组直到遍历到 //这个形参...

SunDaDa9的博客 1401

前端实习面试经验汇总

前端面试题汇总(不定期更新) 第一波前端面试比想象中问的面比较小,主要集中在js,尤其是es6的一些特性上,还有就是项目经验,项目中展开的问题。可能是这些公司对实习生要求没那么高?这次没有问到网络相关的,比如tcp、http啥的,不过感觉以后不会这么简单。 有鱼(一面挂) 1.promise和settimeout 笔试,面试都有问到 主要是给一道带有promise和settimeout方法的程序题,手写输出的顺序,当时给我的是这道题 Promise.resolve().then(

InDoKer的博客 3651

手写递归实现深拷贝(简洁易懂)

递归实现深拷贝

weixin_62765236的博客 280

java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...

手写递归方法//定义检测数据类型的功能函数function checkedType(target) {return Object.prototype.toString.call(target).slice(8, -1)}//实现深度克隆---对象/数组function clone(target) {//判断拷贝的数据类型//初始化变量result 成为最终克隆的数据let result,targe...

weixin_33489093的博客 466

手写递归深拷贝

手写递归深拷贝浅拷贝,面大厂最基本的

智者劳心 480

前端面试:浅拷贝和深拷贝的区别?

浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;   深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。...

java小白翻身 2万+

2022必会前端手写面试

面试题视频讲解(高效学习):进入学习 二、题目 1. 防抖节流 这也是一个经典题目了,首先要知道什么是防抖,什么是节流。 防抖: 在一段时间内,事件只会最后触发一次。 节流: 事件,按照一段时间的间隔来进行触发。 实在不懂的话,可以去这个大佬的Demo地址玩玩防抖节流DEMO // 防抖 function debounce(fn) { let timeout = null; return function () { // 如果事件再次触发就清除定时器,

weixin_59558923的博客 1056

手写深拷贝函数:原理、实现与应用

本文详细介绍了JavaScript中的深拷贝概念及其实现方法。文章首先解释了浅拷贝与深拷贝的区别,指出浅拷贝仅复制引用而深拷贝递归复制所有属性。随后,作者通过手写deepClone函数演示了深拷贝的实现逻辑,包括处理基本类型、循环引用问题,并利用WeakMap避免无限递归。代码示例展示了如何复制嵌套对象和数组,确保新旧对象完全独立。最后,文章提醒注意深拷贝的性能影响及特殊对象处理需求,为开发者提供了实用的深拷贝解决方案。

你若盛开,清风自来 1951

前端实现手写签字_一次搞定前端“四大手写

本文首发于个人GitHub博客要问程序员最心虚的面试题,如果要投票选择,手撕代码一定是前三位的。其中在前端领域,以手写 bind、手写深拷贝手写 EventHub(发布-订阅)、手写 Promise最为常见,我将他们称为四大手写。本文的目的就是要破除大家对四大手写的恐惧,将从为什么要会手写,到每个手写的关键思路总结,再到最终模板,我都会毫无保留地分享给大家。话不多说,让我们开始吧。为什么要会手写...

weixin_31188807的博客 2258

深拷贝与浅拷贝的区别?如何手写实现一个深拷贝

JavaScript 中,引用类型(如对象、数组)在赋值或传参时常常引发“浅拷贝”或“深拷贝”的问题。尤其在 React、Vue 等响应式框架下,数据变化与状态同步息息相关,若不理解这两者的本质差异,很容易引发业务 bug。本主题常作为基础知识或代码题出现,后续还可能结合闭包、原型、递归、JSON 等深入提问,是体现候选人代码能力和思维深度的优质考点。深浅拷贝的本质在于“是否复制内存地址引用”;浅拷贝适用于简单结构、性能敏感场景;深拷贝适用于复杂嵌套数据,需谨慎使用以免性能损耗;推荐。

残影的博客 948

前端面试手写题系列 IX

什么是深拷贝:拷贝的是对象什么是浅拷贝:拷贝的是引用O(nlogn),最坏为 O(n^2)最坏的情况是每次选取的元素都是最大值或者最小值。

https://github.com/QAQDFAFD 499

金九银十:20道前端手写面试

最后希望大家能理解这些题并知晓why,有些题,并不是单单只是用来考你。而是变相的让你理解这其中深藏的意义。以上的题目,我的答案并非就是最优答案。若你有更好的解决方法,请不要吝啬,大胆的敲到评论区!我会把你的解决方法补充到文章里面。...

java_beautiful的博客 1880

前端面试题】深拷贝的终极实现

引子通过本文可以学习到深拷贝的三种写法的实现思路与性能差异首先,我们要理解什么是深拷贝,以及为什么要实现深拷贝深拷贝是什么通俗来讲,深拷贝就是深层的拷贝一个变量值。为什么要实现深拷贝因为在拷贝引用值时,由于复制一个变量只是将其指向要复制变量的引用内存地址,他们并没有完全的断开,而使用就可以实现深拷贝将其完全拷贝为两个单独的存在,指向不同的内存地址。

web全栈开发的博客 1116

面试题:如何实现一个深拷贝

引言 上篇文章详细介绍了浅拷贝Object.assign,并对其进行了模拟实现,在实现的过程中,介绍了很多基础知识。今天这篇文章我们来看看一道必会面试题,即如何实现一个深拷贝。 第一步:简单实现 其实深拷贝可以拆分成 2 步,浅拷贝 + 递归,浅拷贝时判断属性值是否是对象,如果是对象就进行递归操作,两个一结合就实现了深拷贝。 根据上篇文章内容,我们可以写出简单浅拷贝代码如下。 //...

web前端学习 6390

Web前端最全前端面试js高频手写大全,2024年最新面试官常问的问题以及巧妙的回答

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】return p12. 手写节流防抖函数防抖:throw new TypeError(‘fn不是函数’)let timer;// 维护一个 timer。

2401_84617131的博客 1195

一道比亚迪前端面试题:深拷贝和浅拷贝有什么区别?

大家好,我是小寒。本期一起来盘一下这道题。

程序员小寒的博客 1756

JavaScript手写篇】基础对象操作之深拷贝实现

深拷贝前端开发中创建独立对象副本的核心技能。本文系统介绍了深拷贝的定义、与浅拷贝的区别,以及常见实现方法的局限性。重点讲解了手写深拷贝的完整实现方案,包括处理基本类型、对象/数组、Date/RegExp等特殊对象、Set/Map数据结构,以及循环引用问题。通过WeakMap缓存机制解决循环引用,提供了详细的测试用例验证实现正确性。文章还对比了JSON.stringify和structuredClone的不足,最终给出了支持Symbol键、函数等特性的完整代码,帮助开发者全面掌握这一关键技能。

qq_46032105的博客 1041
上一篇: 斐波拉契数列
下一篇: 小程序 云开发 零基础 创建项目到具体操作
阿狸lyinshaofeng
博客等级 码龄4年 342粉丝 74原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值