完成一个 safeGet 函数,可以安全的获取无限多层次的数据,一旦数据不存在不会报错,会返回 undefined,例如:
var data = {a:{b:{c:'aaa'}}}
safeGet(data,'a.b.c'); //'aaa'
safeGet(data,'a.b.c.d'); //undeifned
safeGet(data,'a.b.c.d.e.f'); //undeifned
答案:
1.普通方式遍历
function safeGet(obj,str){
let arr = str.split('.');
let temp = obj;
for(let i = 0;i<arr.length;i++){
let target = temp[arr[i]];
if(!target) return undefined;
if(i === arr.length-1){
return target;
}
temp = target;
}
}
2.reduce 方式
const safeGet = (o,path) =>{
try{
return path.split('.').reduce((pre,cur)=>pre[cur],o);
}catch(e){
return undefined;
}
}
本文介绍了一种名为safeGet的安全数据获取函数,该函数能够处理无限多层次的数据结构,并在数据不存在时返回undefined,避免了错误抛出。通过两种实现方式,包括普通遍历和reduce方法,展示了如何在JavaScript中优雅地解决此问题。

被折叠的 条评论
为什么被折叠?



