簡體   English   中英

如何有效地縮短這些 if 語句?

[英]How to efficiently shorten these if statements?

我正在做一個項目,並在代碼中添加了一些 if 語句。 然后有人告訴我,我可以在線完成,而且效率更高。 我所做的方式完美無缺,但我需要重構以使其被接受。 你能幫幫我嗎? 正如您在下面的示例中所見,我已經嘗試過三元運算符,但它仍然沒有那么短

假設我們有兩個數組arr1arr2並且執行以下代碼來檢查它們的長度。

const hasValArr1 = ():boolean => return arr1.length > 0
const hasValArr2 = ():boolean => return arr2.length > 0

現在有趣的部分if 語句

const isEmpty():boolean => {

if (!hasValArr1() && !hasValArr2()) return false

else if (hasValArr1() && hasValArr2()) return true 

else if (!hasValArr1() && hasValArr2()) return true 

else if (hasValArr1() && !hasValArr2()) return true

}

使用三元運算符

 (!hasValArr1() && !hasValArr2()) ? false

:(hasValArr1() && hasValArr2()) ? true 

:(!hasValArr1() && hasValArr2()) ? true 

:(hasValArr1() && !hasValArr2()) && true

您將如何以更易讀和更有效的方式編寫此代碼? 提前致謝!

實現與方法的名稱不匹配。 該方法的名稱是isEmpty但如果兩個數組都沒有值,則返回 false: if (!hasValArr1() && !hasValArr2()) return false

所以名稱應該是: hasAnyValuedoArraysHaveAnyValue或類似的東西。

至於簡化,你可以簡單地使用||

const doArraysHaveAnyValue(): boolean => {
    return hasValArr1() || hasValArr2();
}

這更好的原因是它更容易閱讀,並且優先使用“積極”而不是否定與!

無需創建單獨的函數來檢查數組長度,您可以直接在isEmpty()函數中使用並獲取布爾值

const isEmpty():boolean => {
    return arr1.length > 0 || arr2.length > 0
}

我想你可以

сonst isEmpty():boolean => {

    if (!hasValArr1() && !hasValArr2()) 
       return false
    
       return true;
}

或者:

const isEmpty():boolean => {
   return (!hasValArr1() && !hasValArr2())
}

或者如果你想檢查兩個數組是否有值:

const HasArraysData():boolean => {
   return (hasValArr1() && hasValArr2())
}

並且閱讀代碼變得更簡單:

if (HasArraysData)

或者:

if (!HasArraysData)

不質疑問題的前提,你可以寫:

const isEmpty():boolean => {
   return hasValArr1() || hasValArr2()
}

所以在你寫的時候,只有第一種情況你想返回 false ,其他情況你只想返回 true ,這就是為什么你的代碼會像下面這樣

常量 isEmpty():boolean => {

如果 (!hasValArr1() && !hasValArr2()) 返回 false

否則返回真

};

如果您想繼續使用您提到的方法,那么建議很少或很高興:

  • 而不是return arr1.length > 0你可以簡單地使用return arr1.length

  • 無需使用多個條件,因為您正在檢查兩個數組是否包含值。 因此,您可以像這樣簡單地修改您的isEmpty函數

     const isEmpty() : boolean => { return (!hasValArr1() && !hasValArr2()) }

我的建議是不要在單獨的方法中檢查 arr1 和 arr2 長度。 您可以在isEmpty()方法本身中進行檢查。

const isEmpty() : boolean => {
    return !arr1.length && !arr2.length
}
const isEmpty():boolean => {
    return hasValArr1() || hasValArr2()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM