前端面试JS手写题解析系列4——如何实现JavaScript对象的扁平化
923
2023.03.07
2023.03.29
发布于 未知归属地

手摸手解析JS手写面试题系列4——如何实现JavaScript对象的扁平化

关注程序员耳东,编程转码真轻松

上周给面霸(我的前端面试辅导服务)学员做模拟面试的时候,随机抽了几道题作为手写环节的题目,发现JS对象扁平化这道题的回答效果不是特别好

这道题是非常经典的一道面试手写题,大概从我毕业(2017年)的时候就有公司在问,很经久不衰的一道题

所以今天的手摸手解析JS手写面试题系列就解析一下如何实现JavaScript对象的扁平化

先看题目:

image.png

为了简单起见,我们只考虑传入的对象属性是object或者基本类型

先分析一下思路,要把给的对象扁平化,那么得把它的所有属性以及嵌套属性都遍历一遍,所以就需要递归来处理

所以说大概的思路框架是:

  • 如果属性的类型是object,那就继续递归处理下层的对象
  • 否则,直接赋值(这里需要一个全局的对象来保存最终结果)

伪代码大概是下面这样的,我们声明一个对象res来保存最终的结果,并且写一个工具函数tool来处理每一轮递归

image.png

然后再分析,最终我们返回的结果的key需要展示属性访问路径,比如像"a.b.c"这样,所以我们要在每次进入下次递归的时候把当前的属性名传进去,所以伪代码可以改一下:

image.png

这里有个细节需要注意一下,在进入下一层递归的时候,需要注意判断当前的parentKey是否为空字符串,如果是的话只需要传curKey到下一层递归,否则需要拼接${parentKey}.${curKey}传入下一层递归

最后一步,补齐一下判断属性是否为对象的逻辑即可,这里我们简单写一下:

image.png

以上就是完整的代码以及如何一步一步的分析题目的过程,祝大家拿到满意的offer

评论 (2)