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

像这样,需要拿到传入参数的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
如果需要的参数取自更深层的对象,那这样写也显得十分臃肿,所以请教一下有没有什么好的方法解决这种问题...
小怪兽爱吃肉
浏览 292回答 2
2回答

暮色呼如

letpadding='eleStyle.padding'.split('.').reduce((res,key)=>{returnres!=null?res[key]:null},data)padding=padding!=null?padding:10;

MMMHUHU

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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript