检查多个对象属性中是否至少有一个为真[重复]

问题描述 投票:6回答:1

说到if语句,可以重构这段代码

(这只是一个例子而不是指“真正的”代码)

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

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

目前我有一个名为state的对象,包含3个布尔属性。如果至少有一个属性返回true,我想显示叠加。我目前的解决方案是这样

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

而且我在问是否有办法清理它。伪代码就是

showOverlay: state => (isNavigating || isHttpRequesting || isProcessing) of state

我知道它没有大的收获,但它将删除所有state. ...部分。

javascript
1个回答
3
投票

使用属性名称数组,并检查它们的some是否真实:

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

也许它更干,这可以说是好的,但是当IMO只有3个属性时它可读性稍差,这可能是坏的。

© www.soinside.com 2019 - 2024. All rights reserved.