问答题726/1593实现lodash中的get方法

使用 lodash 中的 get 函数可避免长链的 key 时获取不到属性而出现问题,此时进行异常避免时及其服务,如 o.a && o.a.b && o.a.b.c && o.a.b.c.d

实现类似 lodash.get ,有以下测试用例:

var object = { 'a': [{ 'b': { 'c': 3 } }] };
 
get(object, 'a[0].b.c');
// => 3
 
get(object, ['a', '0', 'b', 'c']);
// => 3
 
get(object, 'a.b.c', 'default');
// => 'default'
难度:
2022-04-10 创建

参考答案:

1/** 2* object: 对象 3* path: 输入的路径 4* defaultVal: 默认值 5**/ 6 7function get(object, path, defaultVal='undefined') { 8 // 先将path处理成统一格式 9 let newPath = []; 10 if (Array.isArray(path)) { 11 newPath = path; 12 } else { 13 // 先将字符串中的'['、']'去除替换为'.',split分割成数组形式 14 newPath = path.replace(/\[/g,'.').replace(/\]/g,'').split('.'); 15 } 16 17 // 递归处理,返回最后结果 18 return newPath.reduce((o, k) => { 19 console.log(o, k); // 此处o初始值为下边传入的 object,后续值为每次取的内部值 20 return (o || {})[k] 21 }, object) || defaultVal; 22}

最近更新时间:2022-04-10

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!