自检:前端知识清单——JavaScript编码能力

自检:前端知识清单——JavaScript编码能力_第1张图片

前言

题目来自ConardLi的blog
以及平时遇到的一些编程题
写的是自己的题解,水平有限,所以仅供参考
代码会整合在github,觉得有帮助就给个star吧~

正文

四、数据结构与算法

JavaScript编码能力

1、实现一个Storage

Storage在浏览器中只有一个,所以我们可以用单例模式去实现他

自检:前端知识清单——JavaScript编码能力_第2张图片

2、多种方式实现数组去重、扁平化、对比优缺点

去重:

  • set


    自检:前端知识清单——JavaScript编码能力_第3张图片
  • filter


    自检:前端知识清单——JavaScript编码能力_第4张图片
  • reduce


    自检:前端知识清单——JavaScript编码能力_第5张图片

数组扁平化:

  • flat


    自检:前端知识清单——JavaScript编码能力_第6张图片
  • apply


    自检:前端知识清单——JavaScript编码能力_第7张图片
  • ...


    自检:前端知识清单——JavaScript编码能力_第8张图片
  • reduce


    自检:前端知识清单——JavaScript编码能力_第9张图片

3、多种方式实现深浅拷贝、对比优缺点

  • 浅克隆
    浅克隆就是新建了一个新的对象,将原对象的属性一个个赋值到新对象里

es6之前:


自检:前端知识清单——JavaScript编码能力_第10张图片

es6之后:


自检:前端知识清单——JavaScript编码能力_第11张图片

自检:前端知识清单——JavaScript编码能力_第12张图片

深克隆:

  • JSON.parse方法
    JSON对象parse方法可以将JSON字符串反序列化成JS对象,stringify方法可以将JS对象序列化成JSON字符串,这两个方法结合起来就能产生一个便捷的深克隆。


    自检:前端知识清单——JavaScript编码能力_第13张图片

JSON.parse方法的缺点:

  • 无法对函数克隆 会输出undefined
  • 稀疏数组复制错误 undefined会变成null
  • 无法对RegExpDateSymbol等特殊对象正确克隆
  • 会抛弃对象的constructor,所有的构造函数会指向Object
  • 对象有循环引用,会报错

靠谱的深克隆方法——递归

  • 遇到引用类型就递归深拷贝


    自检:前端知识清单——JavaScript编码能力_第14张图片

4、手写函数柯里化工具函数、并理解其应用场景和优势

柯里化是高阶函数的一种,高阶函数的定义是一个接收函数作为参数传递或者将函数作为返回值输出的函数。

应用场景:

题目:


自检:前端知识清单——JavaScript编码能力_第15张图片
自检:前端知识清单——JavaScript编码能力_第16张图片

5、手写防抖和节流工具函数、并理解其内部原理和应用场景

暂时不会,待更新

6、实现一个sleep函数

暂时不会,待更新

7、实现一个Queue类

task函数:新增一个任务。包含两个参数,等待时间和回调函数。
start函数:执行任务队列。将所有任务按队列顺序执行,执行完一个任务才能执行下一个任务。


自检:前端知识清单——JavaScript编码能力_第17张图片

8、实现一个驼峰转换函数

自检:前端知识清单——JavaScript编码能力_第18张图片

9、实现LRU算法

自检:前端知识清单——JavaScript编码能力_第19张图片

10、实现货币格式转换函数

自检:前端知识清单——JavaScript编码能力_第20张图片
自检:前端知识清单——JavaScript编码能力_第21张图片

11、实现一个LazyMan

自检:前端知识清单——JavaScript编码能力_第22张图片

12、大数相加

自检:前端知识清单——JavaScript编码能力_第23张图片

你可能感兴趣的:(自检:前端知识清单——JavaScript编码能力)