推荐答案
-- -------------------- ---- ------- -------- ----------- ----- - -- ----- -- ------ --- --- --------- - ------- - ----- ---- - ---------------- --- ------- - ---- --- ---- - - -- - - ----------- - -- ---- - ----- --- - -------- -- -------------- -- ------ ------------ --- --------- - ------- - ------- - ------------- - ------ ------------------------ - ---- - -- ---- ----- --- - - -- - -- - -- -- -- - - - -- ----------- --------- ----------------- -- --- - -- - -- - -- - - - -
本题详细解读
1. 函数功能
remove(obj, path)
函数的作用是根据给定的路径 path
从对象 obj
中移除对应的属性。路径 path
是一个字符串,使用点号 .
分隔对象的层级。
2. 参数说明
obj
: 需要操作的对象。path
: 字符串形式的路径,表示要移除的属性在对象中的位置。
3. 实现思路
- 参数校验:首先检查
obj
是否为对象类型,如果不是则直接返回。 - 路径解析:将路径
path
按.
分割成多个键名,存储在数组keys
中。 - 遍历对象:通过循环遍历
keys
数组,逐层深入对象obj
,直到到达路径的倒数第二层。 - 删除属性:在到达路径的倒数第二层后,使用
delete
操作符删除最后一个键名对应的属性。
4. 示例解析
-- -------------------- ---- ------- ----- --- - - -- - -- - -- -- -- - - - -- ----------- ---------
- 路径
'a.b.c'
被分割为['a', 'b', 'c']
。 - 函数首先访问
obj.a
,然后访问obj.a.b
,最后删除obj.a.b.c
。 - 删除后,
obj
变为{ a: { b: { d: 2 } } }
。
5. 注意事项
- 如果路径中的某个中间键不存在或不是对象类型,函数会直接返回,不做任何操作。
- 该函数不会处理数组路径,如果需要处理数组路径,可以扩展函数逻辑。