简化包含潜在不确定变量的布尔表达



我有一个布尔表达式定义为:

const actif =
  this.props.configuration &&
  this.props.configuration.puissance &&
  this.props.configuration.puissance > 0

取决于组件,this.props。可能有或没有configurationconfiguration可能或没有puissance。这就是为什么我需要做所有这些验证。

使用{ has } from 'lodash',我已经能够简化一些:

const actif =
      has(this.props.configuration, 'puissance') &&
      this.props.configuration.puissance > 0

,但这也不令人满意。

我尝试了其他事情。我知道JS允许您做这样的事情:

(undefined || 4) === 4

是真的。不幸的是,

(this.props.configuration.puissance || undefined ) > 0 

仍然给我Cannot read property 'puissance' of undefined

是否有一种简单的方法可以进行此比较,而无需检查对象的整个树吗?(如果没有任何步骤,请停止在树上进一步走吗?)

因为听起来好像您已经在使用lodash,如何使用lodash的_.get()函数?

const actif = _.get(this.props, "configuration.puissance", 0) > 0;

有一个建议在JavaScript中提供可选的链式属性,但尚未进入该语言。当/如果这样做,您可以做这样的事情:

const actif = this.props?.configuration?.puissance || 0 > 0;

最新更新