为了账号安全,请及时绑定邮箱和手机立即绑定

如何优雅的判断一个对象及该对象中的某个属性是否存在(JS)求指导!

如何优雅的判断一个对象及该对象中的某个属性是否存在(JS)求指导!

小怪兽爱吃肉 2019-11-03 15:53:27
像这样,需要拿到传入参数的padding值,但是不确定是否传入了eleStyle,更不确定eleStyle中的其他属性是否传入,目前使用三元表达式进行判断,但依然有些繁琐...data:{show:true,//可能传入的参数eleStyle:{//以下某一参数均有可能不传width:100,height:100,padding:20,}}letpadding=eleStyle&&eleStyle.padding?eleStyle.padding:10//当eleStyle.padding为0时,所得到的padding值仍为默认,所以可能应该是下面这种:letpadding=eleStyle&&eleStyle.padding!==undefined?eleStyle.padding:10如果需要的参数取自更深层的对象,那这样写也显得十分臃肿,所以请教一下有没有什么好的方法解决这种问题...
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

letpadding='eleStyle.padding'.split('.').reduce((res,key)=>{returnres!=null?res[key]:null},data)
padding=padding!=null?padding:10;
                            
查看完整回答
反对 回复 2019-11-03
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

30-seconds-of-code里有算是很优雅的写法,可以参考一下。其他做法的内部实现可能不一样,但理念很类似。
constget=(from,...selectors)=>
[...selectors].map(s=>
s
.replace(/\[([^\[\]]*)\]/g,'.$1.')
.split('.')
.filter(t=>t!=='')
.reduce((prev,cur)=>prev&&prev[cur],from)
);
                            
查看完整回答
反对 回复 2019-11-03
  • 2 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信