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

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

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

慕妹3146593 2019-10-25 21:17:22
像这样,需要拿到传入参数的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 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

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

TA贡献1777条经验 获得超10个赞

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-10-25
  • 2 回答
  • 0 关注
  • 694 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号