• 3
  • 新人请关照

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

像这样, 需要拿到传入参数的padding值, 但是不确定是否传入了eleStyle, 更不确定eleStyle中的其他属性是否传入, 目前使用三元表达式进行判断, 但依然有些繁琐...

data: {
    show: true,
    //可能传入的参数
    eleStyle: {
        //以下某一参数均有可能不传
        width: 100,
        height: 100,
        padding: 20,
    }
}
let padding = eleStyle && eleStyle.padding ? eleStyle.padding : 10
//当eleStyle.padding为0时, 所得到的padding值仍为默认, 所以可能应该是下面这种:
let padding = eleStyle && eleStyle.padding !== undefined ? eleStyle.padding : 10

如果需要的参数取自更深层的对象, 那这样写也显得十分臃肿, 所以请教一下有没有什么好的方法解决这种问题...

阅读 976
评论
    5 个回答
    let padding = 'eleStyle.padding'.split('.').reduce((res,key)=>{return res != null ? res[key] : null},data)
    padding = padding != null ? padding : 10;