首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化多变量检查

如何优化多变量检查
EN

Stack Overflow用户
提问于 2022-05-09 10:10:25
回答 2查看 50关注 0票数 0
代码语言:javascript
复制
const {
    service,
    customer,
    company,
    parking,
    aircraftType,
    aircraft,
    endPlan,
    startPlan,
    heatingPointsMasterCodes,
    lavatoryType,
    passengersCategory } = formValues;

useEffect(() => {
    customer &&
        company &&
        (parking || service === ReferenceCodesOfServicesEnum.ProvisioningMinibus) &&
        aircraftType &&
        aircraft &&
        endPlan &&
        startPlan &&
        (heatingPointsMasterCodes ||
            lavatoryType ||
            passengersCategory ||
            formValues[DocumentItemNamesEnum.WaterSystemMaintenance] ||
            service === ReferenceCodesOfServicesEnum.AircraftCooling)
        ? setDisabled(false)
        : setDisabled(true);
}, [formValues]);

因此,我的问题是,如何优化或减少变量检查的真值?首先从对象中获得具有析构的变量,然后检查相同的变量的真值。我想我可以在某种程度上优化它,但是不知道怎么做

EN

回答 2

Stack Overflow用户

发布于 2022-05-09 10:33:29

通常,如果您有一系列if检查,则可以考虑将其转换为switchhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

由于您主要是检查以确保定义了事物,但也有一些更细微的需求,所以最好稍微细分一下:

代码语言:javascript
复制
// Properties required irrespective of environment properties in DocumentItemNamesEnum or  ReferenceCodesOfServicesEnum
const requiredProperties = ["customer",
"company", "aircraftType",
"aircraft", "endPlan",
"startPlan"]

const requiredPropertiesDefined = requiredProperties.every(value => !!value)

useEffect(() => {
   if (requiredPropertiesDefined && 
       (formValues.parking || formValues.service === ReferenceCodesOfServicesEnum.ProvisioningMinibus) &&
   && (formValues.heatingPointsMasterCodes ||
  formValues.lavatoryType ||
  formValues.passengersCategory ||
  formValues[DocumentItemNamesEnum.WaterSystemMaintenance] ||
  service === ReferenceCodesOfServicesEnum.AircraftCooling) {
   setDisabled(true)
} else {
   setDisabled(false
   }
}, [formValues])
票数 1
EN

Stack Overflow用户

发布于 2022-05-09 10:29:32

如果要检查对象的所有值是否为真,则可以使用以下代码。

代码语言:javascript
复制
Object.values(formValues).every(value => !!value)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72170298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档