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

前言

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

正文

四、数据结构与算法

JavaScript编码能力

1、实现一个Storage

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

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

去重:

  • set


  • filter


  • reduce


数组扁平化:

  • flat


  • apply


  • ...


  • reduce


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

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

es6之前:


es6之后:



深克隆:

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


JSON.parse方法的缺点:

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

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

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


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

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

应用场景:

题目:


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

暂时不会,待更新

6、实现一个sleep函数

暂时不会,待更新

7、实现一个Queue类

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


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

9、实现LRU算法

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

11、实现一个LazyMan

12、大数相加

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容