推荐答案
-- -------------------- ---- ------- -------- -------- ----- ------------- - -- ----------- ----- ---- - ------------------- - ---- - ---------------- -- ------------- --- ------ - ---- --- ------ --- -- ----- - -- ------- -- ------ ------ --- -------- -- --- -- ------- - ------ - ------------ - ---- - ------ ------------- - - ------ ------ --- --------- - ------ - ------------- -
本题详细解读
1. 函数功能
get
函数的作用是从一个嵌套的对象中根据给定的路径获取属性值。如果路径不存在或属性值为 undefined
,则返回默认值。
2. 参数说明
obj
: 目标对象,可以是任意嵌套的对象。path
: 路径,可以是字符串(如'a.b.c'
)或数组(如['a', 'b', 'c']
)。defaultValue
: 默认值,当路径不存在或属性值为undefined
时返回。
3. 实现思路
- 路径解析:首先将路径字符串转换为数组形式,方便遍历。如果路径已经是数组,则直接使用。
- 遍历路径:通过遍历路径数组,逐步深入对象,获取对应的属性值。
- 边界处理:在遍历过程中,如果发现当前对象不存在或当前属性不存在,则直接返回默认值。
- 返回结果:如果最终获取到的值不是
undefined
,则返回该值;否则返回默认值。
4. 示例
const obj = { a: { b: { c: 42 } } }; console.log(get(obj, 'a.b.c', 'default')); // 输出: 42 console.log(get(obj, 'a.b.d', 'default')); // 输出: 'default' console.log(get(obj, ['a', 'b', 'c'], 'default')); // 输出: 42
5. 注意事项
- 路径中的
.
会被解析为对象的嵌套层级。 - 如果路径是数组形式,则直接按数组顺序访问对象属性。
- 如果路径不存在或属性值为
undefined
,函数会返回默认值。