2017-10-22 70 views
0

我正在嘗試以更簡潔的方式編寫多個邏輯運算符。就我而言,我希望函數只在所有四個輸入都是數字時才運行。我認爲這樣做的唯一方法是將它們全寫入一個if語句中,如果語句爲& &,使用多個ifs(如下所示)或使用開關。但我想知道是否有更簡潔的方法。更簡潔地編寫多個邏輯運算符

function fn() { 

    const input = display.getInput(); 

    if (input.p !== "" && !isNaN(input.p)) { 

     if (input.d !== "" && !isNaN(input.d)) { 

      if (input.s !== "" && !isNaN(input.s)) { 

       if (input.y !== "" && !isNaN(input.y)) { 

        if (input.y <= 100) { 

         /* run code */ 
        } 
       } 
      } 
     } 
    }  
} 

回答

1

要回答正是你問面積,你可以做這樣的:

if (input.p !== "" && !isNaN(input.p) && input.d !== "" && !isNaN(input.d) ... 

但事實上,你應該更好寫。首先實現驗證功能:

function isValid(property) { 
    return property !== "" && !isNaN(property); 
} 

所以,如果是這樣的:

if (isValid(input.p) && isValid(input.d) && ... 

最後,你可能想要把一切都變成新的功能:

function isEverythingValid(input) { 
    for (let property of ["p", "d", "s", "y"]) { 
     if (!isValid(input[property])) { 
      return false; 
     } 
    } 
    return input.y <= 100; 
} 
+1

這是一個整潔的解決方案。謝啦。 – HPJM