[Javascript] Safe Nested Object Inspection

A common problem when dealing with some kinds of data is that not every object has the same nested structure. lukeskywalker.parents.father.isjedi works, but anakinskywalker.parents.father.isjedi throws an exception, because anakin_skywalker.parents.father is undefined. But we can reduce a path to provide safe default values and avoid exceptions when walking the same path on non-homogenous objects

 

复制代码
let han, anakin, luke;

han = {
  name: 'han',
  parents: {
    father: {
      jedi: true,
    },
    mother: {
      jedi: false
    }
  }
};

anakin = {
  name: 'anakin',
  parents: {
    father: {
      jedi: false,
    },
    mother: {
      jedi: false
    }
  }
};

luke = {
  name: "luke",
  parents: {
    mother: {
      jedi: false
    }
  }
};


let worries = [
  han, anakin, luke
];

function fatherIsJedi(person){
  let path = "parents.father.jedi";
  
  return path.split('.').reduce( (acc, curr)=>{
    if(acc){
      return acc[curr]; 
    }
    
    return false;
  }, person );
};

worries.forEach( (person)=> {
  console.log(`${person.name}'s fathter is a Jedi: `, fatherIsJedi(person));
})
复制代码

 

posted @   Zhentiw  阅读(165)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2015-01-14 [AngularJS] Best Practise - Resolve promises in router, defer controllers
点击右上角即可分享
微信分享提示