前端手写代码面试题
目录

实现一个函数 remove(obj, path),根据路径移除对象属性

· 约 3 分钟读完 · 第 45 / 125 章

推荐答案

本题详细解读

1. 函数功能

remove(obj, path) 函数的作用是根据给定的路径 path 从对象 obj 中移除对应的属性。路径 path 是一个字符串,使用点号 . 分隔对象的层级。

2. 参数说明

  • obj: 需要操作的对象。
  • path: 字符串形式的路径,表示要移除的属性在对象中的位置。

3. 实现思路

  1. 参数校验:首先检查 obj 是否为对象类型,如果不是则直接返回。
  2. 路径解析:将路径 path 按 . 分割成多个键名,存储在数组 keys 中。
  3. 遍历对象:通过循环遍历 keys 数组,逐层深入对象 obj,直到到达路径的倒数第二层。
  4. 删除属性:在到达路径的倒数第二层后,使用 delete 操作符删除最后一个键名对应的属性。

4. 示例解析

  • 路径 'a.b.c' 被分割为 ['a', 'b', 'c']。
  • 函数首先访问 obj.a,然后访问 obj.a.b,最后删除 obj.a.b.c。
  • 删除后,obj 变为 { a: { b: { d: 2 } } }。

5. 注意事项

  • 如果路径中的某个中间键不存在或不是对象类型,函数会直接返回,不做任何操作。
  • 该函数不会处理数组路径,如果需要处理数组路径,可以扩展函数逻辑。