[英]How to efficiently shorten these if statements?
我正在做一個項目,並在代碼中添加了一些 if 語句。 然后有人告訴我,我可以在線完成,而且效率更高。 我所做的方式完美無缺,但我需要重構以使其被接受。 你能幫幫我嗎? 正如您在下面的示例中所見,我已經嘗試過三元運算符,但它仍然沒有那么短
假設我們有兩個數組arr1
和arr2
並且執行以下代碼來檢查它們的長度。
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
所以名稱應該是: hasAnyValue
或doArraysHaveAnyValue
或類似的東西。
至於簡化,你可以簡單地使用||
:
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.