检查多个对象属性中的至少一个是否为true

时间:2019-04-10 09:41:23

标签: javascript

涉及if语句时,可以重构此代码

(这只是一个示例,并不涉及“真实”代码)

.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")

if(person === 'customer' || person === 'employee' || person === 'other')

当前,我有一个名为if(person === ('customer' || 'employee' || 'other')) 的对象,其中包含3个布尔属性。如果至少一个属性返回state,我想显示一个覆盖图。我目前的解决方案是

true

,我在问是否有办法清理它。伪代码是

showOverlay: state => state.isNavigating || state.isHttpRequesting || state.isProcessing

我知道不会有什么大的收获,但是它将删除所有showOverlay: state => (isNavigating || isHttpRequesting || isProcessing) of state 部分。

1 个答案:

答案 0 :(得分:3)

使用一组属性名称,并检查其中some是否真实:

showOverlay: state => ['isNavigating', 'isHttpRequesting', 'isProcesing'].some(prop => state[prop]);

也许DRY更好,但可以说不错,但是当只有3个IMO属性时,它的可读性就差了。